espial 0.0.40 → 0.0.41
raw patch · 73 files changed
+3496/−759 lines, 73 filesdep +networkdep +stmbinary-addedPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: network, stm
API changes (from Hackage documentation)
- Handler.Common: formatEntityPagingCursorTimeBm :: Entity Bookmark -> Text
- Handler.Common: formatEntityPagingCursorTimeNt :: Entity Note -> Text
- Handler.Common: parsePagingCursorTime :: Text -> Maybe UTCTime
- Handler.Edit: postBmBulkR :: Handler ()
- Handler.Notes: postNoteBulkR :: Handler ()
- Model: maybeUpsertResult :: UpsertResult a -> Maybe a
- Model: type BookmarkPagingCursorTime = PagingCursor UTCTime
- Model: type NotePagingCursorTime = PagingCursor UTCTime
- Settings.StaticFiles: js_app_REOQEZQK_min_js :: StaticRoute
- Settings.StaticFiles: js_app_REOQEZQK_min_js_gz :: StaticRoute
- Settings.StaticFiles: js_app_REOQEZQK_min_js_map :: StaticRoute
- Settings.StaticFiles: js_app_REOQEZQK_min_js_map_gz :: StaticRoute
+ Archiver.Backend: ArchiveJob :: Key User -> Key Bookmark -> Url -> ArchiveJob
+ Archiver.Backend: ArchiveJobStore :: ([(Key User, Key Bookmark, Url)] -> IO [Key ArchiveJobRecord]) -> (Key ArchiveJobRecord -> IO ()) -> IO [(Key ArchiveJobRecord, ArchiveJob)] -> (Key Bookmark -> IO Bool) -> ArchiveJobStore
+ Archiver.Backend: ArchiveQueue :: TBQueue QueuedArchiveJob -> Int -> ArchiveJobStore -> ArchiveQueue
+ Archiver.Backend: ArchiverDB :: (forall a. () => ReaderT SqlBackend IO a -> IO a) -> (forall a. () => ReaderT SqlBackend IO a -> IO a) -> ArchiverDB
+ Archiver.Backend: QueuedArchiveJob :: Key ArchiveJobRecord -> ArchiveJob -> QueuedArchiveJob
+ Archiver.Backend: [archiveJobStoreBookmarkExists] :: ArchiveJobStore -> Key Bookmark -> IO Bool
+ Archiver.Backend: [archiveJobStoreDelete] :: ArchiveJobStore -> Key ArchiveJobRecord -> IO ()
+ Archiver.Backend: [archiveJobStoreInsertMany] :: ArchiveJobStore -> [(Key User, Key Bookmark, Url)] -> IO [Key ArchiveJobRecord]
+ Archiver.Backend: [archiveJobStoreLoadAll] :: ArchiveJobStore -> IO [(Key ArchiveJobRecord, ArchiveJob)]
+ Archiver.Backend: [archiverRunDBWrite] :: ArchiverDB -> forall a. () => ReaderT SqlBackend IO a -> IO a
+ Archiver.Backend: [archiverRunDB] :: ArchiverDB -> forall a. () => ReaderT SqlBackend IO a -> IO a
+ Archiver.Backend: data ArchiveJob
+ Archiver.Backend: data ArchiveJobStore
+ Archiver.Backend: data ArchiveQueue
+ Archiver.Backend: data ArchiverDB
+ Archiver.Backend: data QueuedArchiveJob
+ Archiver.Backend: enqueueArchiveJob :: MonadIO m => ArchiveQueue -> ArchiveJob -> m Bool
+ Archiver.Backend: enqueueArchiveJobs :: MonadIO m => ArchiveQueue -> [ArchiveJob] -> m [Bool]
+ Archiver.Backend: newArchiveQueue :: MonadIO m => ArchiveJobStore -> Int -> m ArchiveQueue
+ Archiver.Backend: runArchiveQueueWorker :: ArchiverBackend -> ArchiveQueue -> Int -> (SomeException -> IO ()) -> IO ()
+ Foundation: DBWriteLock :: MVar () -> DBWriteLock
+ Foundation: LangSourceSession :: LangSource
+ Foundation: LangSourceUser :: Maybe User -> LangSource
+ Foundation: LangSourceUserOrSession :: Maybe User -> LangSource
+ Foundation: [appArchiveWorkerThreadId] :: App -> Maybe ThreadId
+ Foundation: [appDBWriteLock] :: App -> DBWriteLock
+ Foundation: data LangSource
+ Foundation: getCurrentLang :: (MonadHandler m, HandlerSite m ~ App) => LangSource -> m I18nLang
+ Foundation: newDBWriteLock :: MonadIO m => m DBWriteLock
+ Foundation: newtype DBWriteLock
+ Foundation: runDBWrite :: ReaderT SqlBackend Handler a -> Handler a
+ Foundation: withDBWriteLock :: MonadUnliftIO m => Bool -> DBWriteLock -> m a -> m a
+ Handler.Add: postAddBulkR :: Handler Text
+ Handler.Archive: archiveBookmarkUrls :: [(Key Bookmark, Bookmark)] -> Handler ()
+ Handler.Common: formatEntityPagingCursorBm :: Entity Bookmark -> Text
+ Handler.Common: formatEntityPagingCursorNt :: Entity Note -> Text
+ Handler.Common: orderParam :: Text
+ Handler.Common: pagingCursorSeparator :: Text
+ Handler.Common: pagingPageParam :: Maybe Text -> Text
+ Handler.Common: parsePagingCursorBm :: Text -> Maybe BookmarkCursor
+ Handler.Common: parsePagingCursorNt :: Text -> Maybe NoteCursor
+ Handler.Common: sortParam :: Text
+ Handler.Edit: postBmBulkEditR :: Handler ()
+ Handler.Notes: postNoteBulkEditR :: Handler ()
+ Handler.User: TagCloudHamletBindings :: Text -> Text -> Bool -> Bool -> Bool -> Bool -> Maybe Int -> Maybe Int -> [(Int, Text)] -> TagCloudHamletBindings
+ Handler.User: [isTagCloudModeRelated] :: TagCloudHamletBindings -> Bool
+ Handler.User: [tagCloudActiveLowerBound] :: TagCloudHamletBindings -> Maybe Int
+ Handler.User: [tagCloudActiveRelatedLowerBound] :: TagCloudHamletBindings -> Maybe Int
+ Handler.User: [tagCloudActiveRelated] :: TagCloudHamletBindings -> Bool
+ Handler.User: [tagCloudActiveTop] :: TagCloudHamletBindings -> Bool
+ Handler.User: [tagCloudBodyEl] :: TagCloudHamletBindings -> Text
+ Handler.User: [tagCloudCounts] :: TagCloudHamletBindings -> [(Int, Text)]
+ Handler.User: [tagCloudExpanded] :: TagCloudHamletBindings -> Bool
+ Handler.User: [tagCloudHeaderEl] :: TagCloudHamletBindings -> Text
+ Handler.User: data TagCloudHamletBindings
+ Handler.User: mkTagCloudHamletBindings :: TagCloudMode -> TagCloudHamletBindings
+ Model: ArchiveJobRecord :: !UserId -> !BookmarkId -> !Text -> !UTCTime -> ArchiveJobRecord
+ Model: BookmarkCursor :: UTCTime -> Maybe BookmarkId -> BookmarkCursor
+ Model: BookmarkSort :: BookmarkSortField -> SortDirection -> BookmarkSort
+ Model: BookmarkSortTagCount :: BookmarkSortField
+ Model: BookmarkSortTime :: BookmarkSortField
+ Model: BookmarkSortTitle :: BookmarkSortField
+ Model: BookmarkSortUrl :: BookmarkSortField
+ Model: NoteCursor :: UTCTime -> Maybe NoteId -> NoteCursor
+ Model: NoteSort :: NoteSortField -> SortDirection -> NoteSort
+ Model: NoteSortCreated :: NoteSortField
+ Model: NoteSortTitle :: NoteSortField
+ Model: PageByCursor :: SortDirection -> Maybe (PagingCursor cursor) -> Paging sort cursor
+ Model: PageByOffset :: sort -> Page -> Paging sort cursor
+ Model: ReasonConflictWithNewer :: FailedReason
+ Model: ReasonHrefUsedByOther :: FailedReason
+ Model: ReasonInvalidInput :: Text -> FailedReason
+ Model: ReasonNotFound :: FailedReason
+ Model: ReasonUnauthorized :: FailedReason
+ Model: SortAsc :: SortDirection
+ Model: SortDesc :: SortDirection
+ Model: [archiveJobRecordBookmarkId] :: ArchiveJobRecord -> !BookmarkId
+ Model: [archiveJobRecordCreated] :: ArchiveJobRecord -> !UTCTime
+ Model: [archiveJobRecordHref] :: ArchiveJobRecord -> !Text
+ Model: [archiveJobRecordUserId] :: ArchiveJobRecord -> !UserId
+ Model: [bookmarkCursorId] :: BookmarkCursor -> Maybe BookmarkId
+ Model: [bookmarkCursorTime] :: BookmarkCursor -> UTCTime
+ Model: [noteCursorCreated] :: NoteCursor -> UTCTime
+ Model: [noteCursorId] :: NoteCursor -> Maybe NoteId
+ Model: bookmarkHrefNoSchemeExpr :: SqlExpr (Entity Bookmark) -> SqlExpr (Value Text)
+ Model: bookmarkTagCountExpr :: Bool -> SqlExpr (Entity Bookmark) -> SqlExpr (Value (Maybe Int))
+ Model: data ArchiveJobRecord
+ Model: data BookmarkCursor
+ Model: data BookmarkSort
+ Model: data BookmarkSortField
+ Model: data FailedReason
+ Model: data NoteCursor
+ Model: data NoteSort
+ Model: data NoteSortField
+ Model: data Paging sort cursor
+ Model: data SortDirection
+ Model: defaultBookmarkSort :: BookmarkSort
+ Model: defaultBookmarkSortDirection :: BookmarkSortField -> SortDirection
+ Model: defaultNoteSort :: NoteSort
+ Model: defaultNoteSortDirection :: NoteSortField -> SortDirection
+ Model: deleteArchiveJobRecord :: Key ArchiveJobRecord -> DB ()
+ Model: fromBookmarkSortField :: IsString a => BookmarkSortField -> a
+ Model: fromNoteSortField :: IsString a => NoteSortField -> a
+ Model: fromSortDirection :: IsString a => SortDirection -> a
+ Model: getArchiveJobRecords :: DB [Entity ArchiveJobRecord]
+ Model: insertArchiveJobRecords :: [(Key User, Key Bookmark, Text)] -> DB [Key ArchiveJobRecord]
+ Model: instance (GHC.Classes.Eq cursor, GHC.Classes.Eq sort) => GHC.Classes.Eq (Model.Paging sort cursor)
+ Model: instance (GHC.Internal.Show.Show cursor, GHC.Internal.Show.Show sort) => GHC.Internal.Show.Show (Model.Paging sort cursor)
+ Model: instance (TypeError ...) => Database.Persist.Class.PersistUnique.AtLeastOneUniqueKey Model.ArchiveJobRecord
+ Model: instance (TypeError ...) => Database.Persist.Class.PersistUnique.OnlyOneUniqueKey Model.ArchiveJobRecord
+ Model: instance Data.Aeson.Types.FromJSON.FromJSON (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance Data.Aeson.Types.FromJSON.FromJSON Model.BookmarkSort
+ Model: instance Data.Aeson.Types.FromJSON.FromJSON Model.BookmarkSortField
+ Model: instance Data.Aeson.Types.FromJSON.FromJSON Model.NoteSort
+ Model: instance Data.Aeson.Types.FromJSON.FromJSON Model.NoteSortField
+ Model: instance Data.Aeson.Types.FromJSON.FromJSON Model.SortDirection
+ Model: instance Data.Aeson.Types.ToJSON.ToJSON (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance Data.Aeson.Types.ToJSON.ToJSON Model.BookmarkSort
+ Model: instance Data.Aeson.Types.ToJSON.ToJSON Model.BookmarkSortField
+ Model: instance Data.Aeson.Types.ToJSON.ToJSON Model.NoteSort
+ Model: instance Data.Aeson.Types.ToJSON.ToJSON Model.NoteSortField
+ Model: instance Data.Aeson.Types.ToJSON.ToJSON Model.SortDirection
+ Model: instance Database.Persist.Class.PersistEntity.PersistEntity Model.ArchiveJobRecord
+ Model: instance Database.Persist.Class.PersistEntity.SafeToInsert Model.ArchiveJobRecord
+ Model: instance Database.Persist.Class.PersistEntity.SymbolToField "bookmarkId" Model.ArchiveJobRecord Model.BookmarkId
+ Model: instance Database.Persist.Class.PersistEntity.SymbolToField "created" Model.ArchiveJobRecord Data.Time.Clock.Internal.UTCTime.UTCTime
+ Model: instance Database.Persist.Class.PersistEntity.SymbolToField "href" Model.ArchiveJobRecord Data.Text.Internal.Text
+ Model: instance Database.Persist.Class.PersistEntity.SymbolToField "id" Model.ArchiveJobRecord (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance Database.Persist.Class.PersistEntity.SymbolToField "userId" Model.ArchiveJobRecord Model.UserId
+ Model: instance Database.Persist.Class.PersistField.PersistField (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance Database.Persist.Class.PersistField.PersistField Model.ArchiveJobRecord
+ Model: instance Database.Persist.Class.PersistStore.ToBackendKey Database.Persist.SqlBackend.Internal.SqlBackend Model.ArchiveJobRecord
+ Model: instance Database.Persist.Sql.Class.PersistFieldSql (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance Database.Persist.Sql.Class.PersistFieldSql Model.ArchiveJobRecord
+ Model: instance GHC.Classes.Eq (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance GHC.Classes.Eq Model.ArchiveJobRecord
+ Model: instance GHC.Classes.Eq Model.BookmarkCursor
+ Model: instance GHC.Classes.Eq Model.BookmarkSort
+ Model: instance GHC.Classes.Eq Model.BookmarkSortField
+ Model: instance GHC.Classes.Eq Model.FailedReason
+ Model: instance GHC.Classes.Eq Model.NoteCursor
+ Model: instance GHC.Classes.Eq Model.NoteSort
+ Model: instance GHC.Classes.Eq Model.NoteSortField
+ Model: instance GHC.Classes.Eq Model.SortDirection
+ Model: instance GHC.Classes.Ord (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance GHC.Classes.Ord Model.ArchiveJobRecord
+ Model: instance GHC.Internal.Enum.Bounded Model.BookmarkSortField
+ Model: instance GHC.Internal.Enum.Bounded Model.NoteSortField
+ Model: instance GHC.Internal.Enum.Bounded Model.SortDirection
+ Model: instance GHC.Internal.Enum.Enum Model.BookmarkSortField
+ Model: instance GHC.Internal.Enum.Enum Model.NoteSortField
+ Model: instance GHC.Internal.Enum.Enum Model.SortDirection
+ Model: instance GHC.Internal.Read.Read (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance GHC.Internal.Read.Read Model.BookmarkSort
+ Model: instance GHC.Internal.Read.Read Model.BookmarkSortField
+ Model: instance GHC.Internal.Read.Read Model.NoteSort
+ Model: instance GHC.Internal.Read.Read Model.NoteSortField
+ Model: instance GHC.Internal.Read.Read Model.SortDirection
+ Model: instance GHC.Internal.Show.Show (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance GHC.Internal.Show.Show Model.ArchiveJobRecord
+ Model: instance GHC.Internal.Show.Show Model.BookmarkCursor
+ Model: instance GHC.Internal.Show.Show Model.BookmarkSort
+ Model: instance GHC.Internal.Show.Show Model.BookmarkSortField
+ Model: instance GHC.Internal.Show.Show Model.FailedReason
+ Model: instance GHC.Internal.Show.Show Model.NoteCursor
+ Model: instance GHC.Internal.Show.Show Model.NoteSort
+ Model: instance GHC.Internal.Show.Show Model.NoteSortField
+ Model: instance GHC.Internal.Show.Show Model.SortDirection
+ Model: instance Web.Internal.HttpApiData.FromHttpApiData (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance Web.Internal.HttpApiData.ToHttpApiData (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: instance Web.PathPieces.PathPiece (Database.Persist.Class.PersistEntity.Key Model.ArchiveJobRecord)
+ Model: mkBookmarkPaging :: BookmarkSort -> Maybe BookmarkPagingCursor -> Page -> BookmarkPaging
+ Model: mkNotePaging :: NoteSort -> Maybe NotePagingCursor -> Page -> NotePaging
+ Model: parseBookmarkSortParams :: Maybe Text -> Maybe Text -> BookmarkSort
+ Model: parseNoteSortParams :: Maybe Text -> Maybe Text -> NoteSort
+ Model: sqliteLikePrefix :: SqlExpr (Value Text) -> Text -> SqlExpr (Value Bool)
+ Model: toBookmarkSortField :: (Ord s, IsString s) => s -> Maybe BookmarkSortField
+ Model: toNoteSortField :: (Ord s, IsString s) => s -> Maybe NoteSortField
+ Model: toSortDirection :: (Ord s, IsString s) => s -> Maybe SortDirection
+ Model: type ArchiveJobRecordId = Key ArchiveJobRecord
+ Model: type BookmarkPaging = Paging BookmarkSort BookmarkCursor
+ Model: type BookmarkPagingCursor = PagingCursor BookmarkCursor
+ Model: type NotePaging = Paging NoteSort NoteCursor
+ Model: type NotePagingCursor = PagingCursor NoteCursor
+ Model: upsertBookmarks :: Key User -> [Maybe (Key Bookmark)] -> [Bookmark] -> [[Text]] -> DB [UpsertResult (Key Bookmark)]
+ Model.Migrations: operation_drop_superseded_indexes :: forall (m :: Type -> Type). Applicative m => OperationSpec m
+ Network.PrivateAddress: isDisallowedFetchHost :: HostName -> IO Bool
+ Network.PrivateAddress: isDisallowedFetchUrl :: Text -> IO Bool
+ Settings: [appAddBulkMaxItems] :: AppSettings -> Int
+ Settings: [appArchiveQueueCapacity] :: AppSettings -> Int
+ Settings: [appArchiveRateLimitMs] :: AppSettings -> Int
+ Settings: [appDemoMode] :: AppSettings -> Bool
+ Settings: [appSqliteAppWriteLock] :: AppSettings -> Bool
+ Settings: [appSqliteBusyTimeoutMs] :: AppSettings -> Int
+ Settings.StaticFiles: js_app_LILLUWFD_min_js :: StaticRoute
+ Settings.StaticFiles: js_app_LILLUWFD_min_js_gz :: StaticRoute
+ Settings.StaticFiles: js_app_LILLUWFD_min_js_map :: StaticRoute
+ Settings.StaticFiles: js_app_LILLUWFD_min_js_map_gz :: StaticRoute
- Archiver.ArchiveBox07: archiveBox07Backend :: AppSettings -> ConnectionPool -> LogFunc -> IO (Maybe ArchiverBackend)
+ Archiver.ArchiveBox07: archiveBox07Backend :: AppSettings -> ArchiverDB -> LogFunc -> IO (Maybe ArchiverBackend)
- Archiver.Backend: ArchiverBackend :: (Key User -> Key Bookmark -> UserAgent -> Url -> IO ()) -> (Url -> Bool) -> ArchiverBackend
+ Archiver.Backend: ArchiverBackend :: (Key User -> Key Bookmark -> Url -> IO ()) -> (Url -> Bool) -> ArchiverBackend
- Archiver.Backend: [runArchiver] :: ArchiverBackend -> Key User -> Key Bookmark -> UserAgent -> Url -> IO ()
+ Archiver.Backend: [runArchiver] :: ArchiverBackend -> Key User -> Key Bookmark -> Url -> IO ()
- Archiver.WaybackMachine: waybackMachineBackend :: Text -> Text -> ConnectionPool -> Manager -> LogFunc -> ArchiverBackend
+ Archiver.WaybackMachine: waybackMachineBackend :: Text -> Text -> ArchiverDB -> Manager -> UserAgent -> LogFunc -> ArchiverBackend
- Foundation: App :: AppSettings -> Static -> Text -> ConnectionPool -> Manager -> Logger -> Maybe ArchiverBackend -> (I18nLang -> I18nKey -> Text) -> Route App -> PublicTagCloudCache -> LoginRateLimiter -> App
+ Foundation: App :: AppSettings -> Static -> Text -> ConnectionPool -> Manager -> Logger -> Maybe (ArchiverBackend, ArchiveQueue) -> Maybe ThreadId -> (I18nLang -> I18nKey -> Text) -> Route App -> PublicTagCloudCache -> LoginRateLimiter -> DBWriteLock -> App
- Foundation: [appArchiver] :: App -> Maybe ArchiverBackend
+ Foundation: [appArchiver] :: App -> Maybe (ArchiverBackend, ArchiveQueue)
- Handler.Archive: archiveBookmarkUrl :: Key Bookmark -> Url -> Handler ()
+ Handler.Archive: archiveBookmarkUrl :: Key Bookmark -> Bookmark -> Handler ()
- Handler.Common: espialUserAgent :: Handler UserAgent
+ Handler.Common: espialUserAgent :: UserAgent
- Handler.Notes: _handleFormSuccess :: NoteForm -> Handler (UpsertResult (Key Note))
+ Handler.Notes: _handleFormSuccess :: NoteForm -> Handler (UpsertResult (Entity Note))
- Model: Failed :: String -> UpsertResult a
+ Model: Failed :: FailedReason -> UpsertResult a
- Model: bookmarksTagsQuery :: Key User -> Bool -> SharedP -> FilterP -> [Tag] -> Maybe Text -> Maybe BookmarkPagingCursorTime -> Limit -> Page -> DB (Int, [(Entity Bookmark, Maybe Text)], Bool, Bool)
+ Model: bookmarksTagsQuery :: Key User -> Bool -> SharedP -> FilterP -> [Tag] -> Maybe Text -> BookmarkPaging -> Limit -> DB (Int, [(Entity Bookmark, Maybe Text)], Bool, Bool)
- Model: getNoteList :: Key User -> Maybe Text -> Maybe NotePagingCursorTime -> SharedP -> Limit -> Page -> DB (Int, [Entity Note], Bool, Bool)
+ Model: getNoteList :: Key User -> Maybe Text -> SharedP -> NotePaging -> Limit -> DB (Int, [Entity Note], Bool, Bool)
- Model: upsertNote :: Key User -> Maybe (Key Note) -> Note -> DB (UpsertResult (Key Note))
+ Model: upsertNote :: Key User -> Maybe (Key Note) -> Note -> DB (UpsertResult (Entity Note))
- Model.Migrations: operation_create_initial_indexes :: forall (m :: Type -> Type). Applicative m => OperationSpec m
+ Model.Migrations: operation_create_initial_indexes :: forall (m :: Type -> Type). MonadIO m => OperationSpec m
- Model.Migrations: printAppMigrations :: forall (m :: Type -> Type). DBM m ()
+ Model.Migrations: printAppMigrations :: DB ()
- Settings: AppSettings :: String -> SqliteConf -> Maybe Text -> HostPreference -> Int -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Text -> Maybe Text -> Bool -> Maybe Text -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Text -> Maybe Text -> ArchiveBackend -> Maybe Text -> Bool -> Bool -> I18nLang -> Maybe FilePath -> Maybe FilePath -> Int -> PasswordHashAlgo -> Int -> Int -> Int -> AppSettings
+ Settings: AppSettings :: String -> SqliteConf -> Bool -> Int -> Maybe Text -> HostPreference -> Int -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Text -> Maybe Text -> Bool -> Maybe Text -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Text -> Maybe Text -> ArchiveBackend -> Int -> Int -> Maybe Text -> Bool -> Bool -> I18nLang -> Maybe FilePath -> Maybe FilePath -> Int -> PasswordHashAlgo -> Int -> Int -> Int -> Bool -> Int -> AppSettings
Files
- Makefile +16/−1
- README.md +106/−1
- app/migration/Main.hs +8/−7
- changelog.md +24/−0
- config/routes +3/−2
- config/settings.yml +18/−0
- espial.cabal +31/−7
- frontend/src/api.ts +6/−4
- frontend/src/components/BMark.tsx +6/−3
- frontend/src/components/NList.tsx +2/−2
- frontend/src/components/NNote.tsx +3/−2
- frontend/src/components/TagCloud.tsx +131/−147
- frontend/src/index.tsx +4/−2
- package.yaml +19/−2
- src/Application.hs +40/−13
- src/Archiver/ArchiveBox07.hs +7/−10
- src/Archiver/Backend.hs +65/−3
- src/Archiver/Debug.hs +2/−2
- src/Archiver/WaybackMachine.hs +8/−8
- src/Foundation.hs +65/−21
- src/Handler/AccountSettings.hs +19/−15
- src/Handler/Add.hs +108/−24
- src/Handler/Archive.hs +21/−21
- src/Handler/Common.hs +40/−13
- src/Handler/Docs.hs +2/−2
- src/Handler/Edit.hs +8/−8
- src/Handler/Notes.hs +81/−31
- src/Handler/User.hs +103/−28
- src/Model.hs +434/−109
- src/Model/Form.hs +2/−2
- src/Model/Migrations.hs +55/−10
- src/Network/PrivateAddress.hs +63/−0
- src/Settings.hs +24/−1
- stack.yaml +3/−0
- static/css/common.css +10/−9
- static/js/app-LILLUWFD.min.js +76/−0
- static/js/app-LILLUWFD.min.js.gz binary
- static/js/app-LILLUWFD.min.js.map +7/−0
- static/js/app-LILLUWFD.min.js.map.gz binary
- static/js/app-REOQEZQK.min.js +0/−76
- static/js/app-REOQEZQK.min.js.gz binary
- static/js/app-REOQEZQK.min.js.map +0/−7
- static/js/app-REOQEZQK.min.js.map.gz binary
- static/js/manifest.json +1/−1
- static/locales/de/translation.json +28/−6
- static/locales/en/translation.json +28/−6
- static/locales/es/translation.json +28/−6
- static/locales/fr/translation.json +28/−6
- static/locales/it/translation.json +28/−6
- static/locales/ja/translation.json +28/−6
- static/locales/ko/translation.json +28/−6
- static/locales/pl/translation.json +28/−6
- static/locales/pt-BR/translation.json +28/−6
- static/locales/ru/translation.json +28/−6
- static/locales/tr/translation.json +28/−6
- static/locales/uk/translation.json +28/−6
- static/locales/zh-Hans/translation.json +28/−6
- static/locales/zh-Hant/translation.json +28/−6
- templates/docs-search.hamlet +17/−2
- templates/notes.hamlet +25/−11
- templates/pager.hamlet +12/−8
- templates/search.hamlet +4/−0
- templates/user.hamlet +76/−31
- test/JsonWireFormatSpec.hs +182/−0
- test/Model/BookmarksBulkUpsertSpec.hs +208/−0
- test/Model/BookmarksPagingSpec.hs +150/−25
- test/Model/BookmarksQuerySpec.hs +2/−2
- test/Model/BookmarksSearchSpec.hs +155/−1
- test/Model/BookmarksSortSpec.hs +247/−0
- test/Model/NotesPagingSpec.hs +137/−0
- test/Model/NotesSearchSpec.hs +32/−1
- test/Model/NotesSortSpec.hs +151/−0
- test/Model/NotesUpsertSpec.hs +85/−0
Makefile view
@@ -14,7 +14,7 @@ all: build build: - @stack build + @stack build --ghc-options="-Werror" build-fast: @stack build --fast @@ -36,6 +36,21 @@ serve: @stack exec espial -- +RTS -T + +test: + @stack test + +ghci: + @stack ghci --main-is espial:exe:espial + +ghci-migration: + @stack ghci --main-is espial:exe:migration + +ghci-nocode: + @stack ghci --main-is espial:exe:espial --ghci-options=-fno-code + +ghci-test: + @stack ghci --main-is espial:test:test --test --ghci-options="-e main" _ESPIAL_PS_ID = $$($(_DOCKER_COMPOSE) ps -q espial) _LOCAL_INSTALL_PATH = $$(stack path | grep local-install-root | awk -e '{print $$2}')
README.md view
@@ -23,7 +23,7 @@ https://espdemo.ae8.org/u:demo - + ## Related Projects @@ -81,6 +81,111 @@ ```bash stack exec espial ``` + +## API + +### Adding a Bookmark via `curl` + +Bookmarks can be added programmatically by POSTing JSON to `/api/add`, authenticated with an API key. + +1. Generate an API key for a user, either: + - From the Account Settings (`settings`) page in the web UI, under **API Key** — click **Create API Key** (or **Reset API Key** to replace an existing one). The key is shown only once, so copy it immediately. + - Or via the CLI: + + ```bash + stack exec migration -- createapikey --userName myusername + ``` + +2. Call the endpoint, passing the key in the `Authorization: ApiKey <key>` header: + +Example Request: + +```bash +curl -X POST https://your-espial-host/api/add \ + -H "Authorization: ApiKey <key>" \ + -H "Content-Type: application/json" \ + -H "Accept: application/json" \ + -d '{ + "url": "https://example.com", + "title": "Example Site", + "description": "", + "tags": "example some-tag", + "private": false, + "toread": false + }' +``` + +Only `url` is required; all other fields are optional. On success the response is `201 Created` with the new bookmark id, or `204 No Content` if an existing bookmark was updated instead — matched by `bid` if given, otherwise by the (`userid`, `url`) pair. + +### `/api/add` Fields + +| Field | Type | Description | +| ------------------ | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `url` | `string` | The bookmark's URL. Required. | +| `title` | `string` | The bookmark's title/description line. Defaults to empty. | +| `description` | `string` | Extended/longer notes for the bookmark. Defaults to empty. | +| `tags` | `string` | Space-separated list of tags, e.g. `"example some-tag"`. | +| `private` | `boolean` | `true` keeps the bookmark private to the owner; `false` (or omitted) makes it shared/public. | +| `toread` | `boolean` | Marks the bookmark on the "to read" list. Defaults to `false`. | +| `bid` | `number` | Existing bookmark id to update. Omit to create a new bookmark (or update by matching `url` — see above). | +| `slug` | `string` | URL-friendly identifier used in bookmark links (`u:<user>/<slug>`). Auto-generated when omitted. | +| `selected` | `boolean` | Whether the bookmark is "starred". Defaults to `false`. | +| `time` | `string` | Creation timestamp, ISO 8601 (e.g. `"2018-02-26T22:57:20Z"`). Defaults to the current time; useful when importing bookmarks with a historical date. | +| `archiveUrl` | `string` | Link to an already-archived copy of the page. Normally set by the archiver, not supplied by clients. | +| `archiveRequested` | `boolean` | Whether to kick off archiving of `url` after saving. Only takes effect when an archive backend is configured (see [Archive Backends](#archive-backends)). Not stored on the bookmark itself. | + +### Adding Multiple Bookmarks via `curl` + +Multiple bookmarks can be added in a single request by POSTing a JSON array to `/api/addBulk`, using the same fields and auth as `/api/add`. + +Example Request: + +```bash +curl -X POST https://your-espial-host/api/addBulk \ + -H "Authorization: ApiKey <key>" \ + -H "Content-Type: application/json" \ + -H "Accept: application/json" \ + -d ' + [ + { + "url": "https://example.com/11111111", + "title": "Example Site 1", + "description": "Random test bookmark 11111111", + "tags": "example test run1", + "private": false, + "toread": false + }, + { + "url": "https://example.com/22222222", + "title": "Example Site 2", + "description": "Random test bookmark 22222222", + "tags": "example test run2", + "private": false, + "toread": false + }, + { + "url": "33333333", + "title": "Example Site 3", + "description": "Random test bookmark 33333333", + "tags": "example test run3", + "private": false, + "toread": false + } + ]' +``` + +The response is `200 OK` with a JSON array of per-bookmark results, in the same order as the request: + +```json +[ + { "status": "created", "id": 105831 }, + { "status": "updated", "id": 105832 }, + { "status": "failed", "error": "Invalid URL: InvalidUrlException \"33333333\" \"Invalid URL\"" } +] +``` + +If the request array has more items than the `add-bulk-max-items` setting allows (default `200`), the response is `413 Payload Too Large` and no bookmarks are saved. + ## Configuration
app/migration/Main.hs view
@@ -3,7 +3,6 @@ module Main where import ClassyPrelude -import Data.CaseInsensitive qualified as CI import Data.Text qualified as T import Database.Persist qualified as P import Database.Persist.Sqlite qualified as P @@ -12,10 +11,8 @@ import Model import Model.Custom import Model.File -import Model.FileNetscape (exportNetscapeBookmarks) import Model.Migrations (dumpMigration, runAppMigrations, runPersistentMigrations, runPreMigrations) import Options.Applicative qualified as OA -import Options.Applicative.Help (suggestionsHelp) import Options.Generic import Settings (AppSettings (..), appPasswordHashConfig) import Types @@ -37,7 +34,7 @@ privacyLock :: Maybe Bool, publicTagCloud :: Maybe Bool, previewNotes :: Maybe Bool, - userLanguage :: Maybe I18nLang + userLanguage :: Maybe Language } | CreateApiKey { conn :: Maybe Text, @@ -112,9 +109,13 @@ pure (toI18nLang s) -instance ParseField I18nLang where - readField = parseI18nLang +newtype Language = Language {unLanguage :: I18nLang} + deriving (Show) +instance ParseField Language where + readField = Language <$> parseI18nLang + metavar _ = "LANGUAGE" + main :: IO () main = do hSetBuffering stdout LineBuffering @@ -155,7 +156,7 @@ privacyLockVal = fromMaybe False privacyLock publicTagCloudVal = fromMaybe False publicTagCloud previewNotesVal = fromMaybe True previewNotes - userLanguageVal = userLanguage + userLanguageVal = unLanguage <$> userLanguage void $ P.upsertBy (UniqueUserName userName)
changelog.md view
@@ -1,5 +1,29 @@ # Changelog +## v0.0.41 (2026-07-18) + +- add sorting ability on bookmarks (time,title,url,tagcount) and notes (created, title) (#88) + - db indexes reworked for the new sort fields +- removed search box for anonymous users +- search query updates + - add search term grouping with parentheses `(`, `)` + - add exact search on a specific field `field=` + - search query help doc updated +- add `/api/addBulk` for adding multiple bookmarks in a single request (#90) + - include documentation for `/api/add` and `/api/addBulk` in readme (#89) + - add appSetting `add-bulk-max-items` (default 200); +- add queuing for archive requests + - add appSettings `archive-rate-limit-ms`, `archive-queue-capacity` + - archive requests to the archiveBacked are performed at a maximum rate of `archive-rate-limit-ms` + - archive requests waiting in the queue are backed by persistent storage + - archive requests exceeding queue capacity are dropped; best-effort only +- improve note update safety: updated is rejected when server has newer copy +- add appSetting `sqlite-app-write-lock` and `sqlite-busy-timeout-ms` to avoid errors under concurrent db writers +- styling/css adjustments +- add appSetting `demo-mode` (disables password changes) +- security: guard against SSRF for private addresses +- security/bug fix: fixed regression when rendering a bookmark whose extended text contains `</script>` + ## v0.0.40 (2026-07-11) - add Bulk Edit for notes
config/routes view
@@ -16,7 +16,7 @@ !/#UserNameP/notes/#NtSlug NoteR GET !/api/note/add AddNoteR POST !/api/note/#Int64 DeleteNoteR DELETE -/!api/note/bulk NoteBulkR POST +/!api/note/bulkEdit NoteBulkEditR POST -- user / HomeR GET @@ -53,6 +53,7 @@ -- add /add AddViewR GET /api/add AddR POST +/api/addBulk AddBulkR POST -- api /api/lookuptitle LookupTitleR POST @@ -67,7 +68,7 @@ /api/bm/#Int64/star StarR PATCH /api/bm/#Int64/unstar UnstarR PATCH /api/bm/#Int64/archive ArchiveBookmarkR POST -/!api/bm/bulk BmBulkR POST +/!api/bm/bulkEdit BmBulkEditR POST -- doc /docs/search DocsSearchR GET
config/settings.yml view
@@ -37,6 +37,15 @@ # database: ":memory:" poolsize: "_env:SQLITE_POOLSIZE:10" +# SQLite only allows one writer at a time; these two settings work together to +# avoid `SQLITE_BUSY`/"database is locked" errors under concurrent writers. +# sqlite-app-write-lock serializes all DB write transactions through a single +# in-process lock (see `runDBWrite`), which avoids the errors outright. +# sqlite-busy-timeout-ms is a defense-in-depth backstop for lock contention +# that still occurs (e.g. an external `sqlite3` CLI session touching the file). +sqlite-app-write-lock: "_env:SQLITE_APP_WRITE_LOCK:true" +sqlite-busy-timeout-ms: "_env:SQLITE_BUSY_TIMEOUT_MS:30000" + copyright: Insert copyright statement here # analytics: UA-YOURCODE @@ -44,6 +53,9 @@ # archive-backend: "_env:ARCHIVE_BACKEND:wayback-machine" # archive-backend: "_env:ARCHIVE_BACKEND:archivebox07" +archive-rate-limit-ms: "_env:ARCHIVE_RATE_LIMIT_MS:2000" # minimum delay between successive archive requests. +archive-queue-capacity: "_env:ARCHIVE_QUEUE_CAPACITY:500" # max pending archive jobs held in memory; excess are dropped. + archive-socks-proxy-host: "_env:ARCHIVE_SOCKS_PROXY_HOST" archive-socks-proxy-port: "_env:ARCHIVE_SOCKS_PROXY_PORT" @@ -78,3 +90,9 @@ # Maximum allowed request body size, in bytes. Requests exceeding this (e.g. large # Settings/import uploads) are rejected with 413. Set to 0 to disable the limit. maximum-content-length: "_env:MAXIMUM_CONTENT_LENGTH:10485760" + +# Maximum number of bookmarks allowed in a single AddBulkR request +add-bulk-max-items: "_env:ADD_BULK_MAX_ITEMS:200" + +# when true, users cannot change their password. +demo-mode: "_env:DEMO_MODE:false"
espial.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: espial -version: 0.0.40 +version: 0.0.41 synopsis: Espial is an open-source, web-based bookmarking server. description: Espial is an open-source, web-based bookmarking server. - Yesod + TypeScript + sqlite3 @@ -86,10 +86,10 @@ static/fonts/glyphicons-halflings-regular.ttf static/fonts/glyphicons-halflings-regular.woff static/images/bluepin.gif - static/js/app-REOQEZQK.min.js - static/js/app-REOQEZQK.min.js.gz - static/js/app-REOQEZQK.min.js.map - static/js/app-REOQEZQK.min.js.map.gz + static/js/app-LILLUWFD.min.js + static/js/app-LILLUWFD.min.js.gz + static/js/app-LILLUWFD.min.js.map + static/js/app-LILLUWFD.min.js.map.gz static/js/js.cookie-2.2.0.min.js static/js/js.cookie-2.2.0.min.js.gz static/js/manifest.json @@ -144,6 +144,11 @@ manual: True default: False +flag werror + description: Treat warnings as errors in executables. Off by default so the package still builds against future GHC versions that add new warnings; enabled for development via stack.yaml. + manual: True + default: False + library exposed-modules: Application @@ -176,6 +181,7 @@ Model.FileNote Model.Form Model.Migrations + Network.PrivateAddress PathPiece Pretty Settings @@ -238,12 +244,14 @@ , microlens , monad-logger ==0.3.* , mtl + , network , parser-combinators , persistent >=2.14 && <2.19 , persistent-sqlite ==2.13.3.0 , persistent-template ==2.12.* , safe , shakespeare >=2.0 && <2.3 + , stm , template-haskell , text ==2.* , text-short @@ -303,7 +311,7 @@ TemplateHaskell TypeFamilies ViewPatterns - ghc-options: -threaded -rtsopts -with-rtsopts=-N + ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall build-depends: aeson >=2.0 , attoparsec @@ -344,12 +352,14 @@ , microlens , monad-logger ==0.3.* , mtl + , network , parser-combinators , persistent >=2.14 && <2.19 , persistent-sqlite ==2.13.3.0 , persistent-template ==2.12.* , safe , shakespeare >=2.0 && <2.3 + , stm , template-haskell , text ==2.* , text-short @@ -374,6 +384,8 @@ if !os(windows) build-depends: unix + if flag(werror) + ghc-options: -Werror if flag(library-only) buildable: False @@ -396,7 +408,7 @@ TemplateHaskell TypeFamilies ViewPatterns - ghc-options: -threaded -rtsopts -with-rtsopts=-N + ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall build-depends: aeson >=2.0 , attoparsec @@ -437,6 +449,7 @@ , microlens , monad-logger ==0.3.* , mtl + , network , optparse-applicative , optparse-generic >=1.2.3 , parser-combinators @@ -445,6 +458,7 @@ , persistent-template ==2.12.* , safe , shakespeare >=2.0 && <2.3 + , stm , template-haskell , text ==2.* , text-short @@ -469,6 +483,8 @@ if !os(windows) build-depends: unix + if flag(werror) + ghc-options: -Werror if flag(library-only) buildable: False @@ -480,13 +496,19 @@ Handler.HomeSpec Handler.LocalesSpec I18nSpec + JsonWireFormatSpec Model.BookmarksBulkEditSpec + Model.BookmarksBulkUpsertSpec Model.BookmarksPagingSpec Model.BookmarksQuerySpec Model.BookmarksSearchSpec + Model.BookmarksSortSpec Model.FileImportExportSpec Model.NotesBulkEditSpec + Model.NotesPagingSpec Model.NotesSearchSpec + Model.NotesSortSpec + Model.NotesUpsertSpec Model.PasswordHashSpec TestImport Paths_espial @@ -547,12 +569,14 @@ , microlens , monad-logger ==0.3.* , mtl + , network , parser-combinators , persistent >=2.14 && <2.19 , persistent-sqlite ==2.13.3.0 , persistent-template ==2.12.* , safe , shakespeare >=2.0 && <2.3 + , stm , template-haskell , text ==2.* , text-short
frontend/src/api.ts view
@@ -70,11 +70,11 @@ } export async function bulkEdit(req: BulkEditRequest): Promise<BulkEditResponse> { - return bulkEditPost('api/bm/bulk', req); + return bulkEditPost('api/bm/bulkEdit', req); } export async function noteBulkEdit(req: NoteBulkEditRequest): Promise<BulkEditResponse> { - return bulkEditPost('api/note/bulk', req); + return bulkEditPost('api/note/bulkEdit', req); } async function bulkEditPost( @@ -122,12 +122,14 @@ export async function editNote( note: Note, -): Promise<{ ok: boolean; status: number; bodyText: string }> { +): Promise<{ ok: boolean; status: number; bodyText: string; note: Note | null }> { const res = await request('POST', 'api/note/add', { headers: { 'content-type': 'application/json' }, body: JSON.stringify(note), }); - return { ok: res.ok, status: res.status, bodyText: await res.text() }; + if (!res.ok) return { ok: false, status: res.status, bodyText: await res.text(), note: null }; + const updated = await res.json<Note>(); + return { ok: true, status: res.status, bodyText: '', note: updated }; } export async function lookupTitle(bm: Bookmark): Promise<string | null> {
frontend/src/components/BMark.tsx view
@@ -28,6 +28,7 @@ const [edit, setEdit] = React.useState(false); const [loading, setLoading] = React.useState(false); const [archiving, setArchiving] = React.useState(false); + const [archived, setArchived] = React.useState(false); const [actionError, setActionError] = React.useState<string | null>(null); const [errorFadingOut, setErrorFadingOut] = React.useState(false); const errorTimer = React.useRef<number | null>(null); @@ -159,6 +160,7 @@ setActionError(null); setErrorFadingOut(false); setArchiving(false); + setArchived(false); closeSuggestions(); if (next) setFocus(tagInputId); } @@ -175,6 +177,7 @@ async function onArchive() { setArchiving(true); + setArchived(true); try { const res = await archiveBookmark(bm.bid); if (!res.ok) { @@ -208,7 +211,7 @@ } }; - const archivingDisabled = archiving || bm.private || bm.url !== editBm.url; + const archivingDisabled = archiving || archived || editBm.private || bm.url !== editBm.url; return ( <div @@ -233,12 +236,12 @@ href={bm.url} target="_blank" rel="noreferrer" - className={`link f5 lh-title${bm.toread ? ' unread' : ''}`} + className={`link bmark-link f5 lh-title${bm.toread ? ' unread' : ''}`} > {bm.title === '' ? t('noTitle') : bm.title} </a> <br /> - <a href={bm.url} className="link f7 thm-text-tertiary thm-hover-link-color"> + <a href={bm.url} className="link bmark-link f7 thm-text-tertiary thm-hover-link-color"> {bm.url} </a> {bm.archiveUrl ? (
frontend/src/components/NList.tsx view
@@ -41,7 +41,7 @@ className={`note w-100 mw7 pa1 mb2${note.shared ? '' : ' private'}`} > <div className="display"> - <a href={linkToFilterSingle(note.slug)} className="link f5 lh-title"> + <a href={linkToFilterSingle(note.slug)} className="link note-link f5 lh-title"> {note.title === '' ? t('noTitle') : note.title} </a> <br /> @@ -51,7 +51,7 @@ </div> ) : null} <a - className="link f7 dib thm-text-tertiary w4" + className="link note-link f7 dib thm-text-tertiary w4" data-created={note.created} title={shdatetime(a.lang, note.created)} href={linkToFilterSingle(note.slug)}
frontend/src/components/NNote.tsx view
@@ -79,8 +79,9 @@ else window.location.href = org; } else if (editNoteState.id === 0) { window.location.href = fromNullableStr(a.noteR); - } else { - setNote(editNoteState); + } else if (res.note) { + setNote(res.note); + setEditNoteState(res.note); setEdit(false); } } else {
frontend/src/components/TagCloud.tsx view
@@ -1,5 +1,4 @@ import React from 'react'; -import { useTranslation } from 'react-i18next'; import { getTagCloud, updateTagCloudMode } from '../api'; import { app } from '../globals'; @@ -15,9 +14,134 @@ } from '../types'; import { encodeTag, fromNullableStr } from '../util'; -/** Displays the tag cloud, with controls to filter by top tags, frequency, or related tags. */ -export function TagCloud({ initialMode }: { initialMode: TagCloudModeF }) { - const { t } = useTranslation(); +/** Binds click handlers on the server-rendered tag cloud header (mode/filter controls) to the tag cloud store. */ +export function bindTagCloudHeader(renderElSelector: string) { + return () => { + const container = document.querySelector<HTMLElement>(renderElSelector); + if (!container) return; + + container.addEventListener('click', (e) => { + const target = (e.target as HTMLElement).closest<HTMLElement>('[data-tcm-action]'); + if (!target || !container.contains(target)) return; + const parsed = readTagCloudHeaderAction(target); + if (!parsed) return; + e.preventDefault(); + + const mode = useTagCloudStore.getState().mode; + + if (parsed.action === 'toggleExpand') { + void applyTagCloudMode(setExpanded(mode, !isExpanded(mode))); + return; + } + + if (parsed.action === 'top' || parsed.action === 'lowerBound') { + const next: TagCloudModeBrowse = + parsed.action === 'top' + ? { kind: 'top', expanded: isExpanded(mode) } + : { kind: 'lowerBound', expanded: isExpanded(mode), value: parsed.value }; + const isActive = + (next.kind === 'top' && mode.kind === 'top') || + (next.kind === 'lowerBound' && mode.kind === 'lowerBound' && mode.value === next.value); + void applyTagCloudMode( + isActive ? setExpanded(mode, !isExpanded(mode)) : setExpanded(next, true), + ); + return; + } + + const relatedTags = currentRelatedTags(mode); + const next: TagCloudModeRelated = + parsed.action === 'related' + ? { kind: 'related', expanded: isExpanded(mode), value: relatedTags } + : { + kind: 'relatedLowerBound', + expanded: isExpanded(mode), + value: relatedTags, + lowerBound: parsed.lowerBound, + }; + const isActive = + (next.kind === 'related' && mode.kind === 'related') || + (next.kind === 'relatedLowerBound' && + mode.kind === 'relatedLowerBound' && + mode.lowerBound === next.lowerBound); + void applyTagCloudMode( + isActive ? setExpanded(mode, !isExpanded(mode)) : setExpanded(next, true), + ); + }); + + function updateHeaderUI(mode: TagCloudModeF) { + if (!container) return; + if (mode.kind === 'none') return; + container.querySelectorAll<HTMLElement>('[data-tcm-action]').forEach((btn) => { + const parsed = readTagCloudHeaderAction(btn); + if (!parsed) return; + switch (parsed.action) { + case 'top': + btn.classList.toggle('b', mode.kind === 'top'); + return; + case 'lowerBound': + btn.classList.toggle('b', mode.kind === 'lowerBound' && mode.value === parsed.value); + return; + case 'related': + btn.classList.toggle('b', mode.kind === 'related'); + return; + case 'relatedLowerBound': + btn.classList.toggle( + 'b', + mode.kind === 'relatedLowerBound' && mode.lowerBound === parsed.lowerBound, + ); + return; + case 'toggleExpand': { + const label = isExpanded(mode) ? btn.dataset.hideLabel : btn.dataset.showLabel; + if (label !== undefined) btn.textContent = label; + return; + } + } + }); + } + + useTagCloudStore.subscribe((state) => { + updateHeaderUI(state.mode); + }); + }; +} + +type TagCloudHeaderAction = + | { action: 'top' } + | { action: 'lowerBound'; value: number } + | { action: 'related' } + | { action: 'relatedLowerBound'; lowerBound: number } + | { action: 'toggleExpand' }; + +function readTagCloudHeaderAction(el: HTMLElement): TagCloudHeaderAction | null { + switch (el.dataset.tcmAction) { + case 'top': + return { action: 'top' }; + case 'lowerBound': + return { action: 'lowerBound', value: Number(el.dataset.tcmValue) }; + case 'related': + return { action: 'related' }; + case 'relatedLowerBound': + return { action: 'relatedLowerBound', lowerBound: Number(el.dataset.tcmLb) }; + case 'toggleExpand': + return { action: 'toggleExpand' }; + default: + return null; + } +} + +async function applyTagCloudMode(next: TagCloudModeF) { + useTagCloudStore.getState().setMode(next); + if (app().dat.isowner) { + await updateTagCloudMode(tagCloudModeFromF(next)); + } +} + +function currentRelatedTags(mode: TagCloudModeF): string[] { + return mode.kind === 'related' || mode.kind === 'relatedLowerBound' ? mode.value : []; +} + +/** Displays the tag cloud body (the list of tag links). The header (mode/filter controls) is server-rendered; see bindTagCloudHeader. */ +export function TagCloudBody({ initialMode }: { initialMode: TagCloudModeF }) { const mode = useTagCloudStore((s) => s.mode); const tagcloud = useTagCloudStore((s) => s.tagcloud); const setMode = useTagCloudStore((s) => s.setMode); @@ -36,151 +160,11 @@ void fetchTagCloud(mode); }, [mode, setTagCloud]); - if (mode.kind === 'none') return <div className="tag_cloud" />; - - const makeLbMode = (n: number): TagCloudModeBrowse => ({ - kind: 'lowerBound', - expanded: isExpanded(mode), - value: n, - }); - - const relatedTags = - mode.kind === 'related' || mode.kind === 'relatedLowerBound' ? mode.value : []; - const makeRelatedMode = (): TagCloudModeRelated => ({ - kind: 'related', - expanded: isExpanded(mode), - value: relatedTags, - }); - const makeRelatedLbMode = (lb: number): TagCloudModeRelated => ({ - kind: 'relatedLowerBound', - expanded: isExpanded(mode), - value: relatedTags, - lowerBound: lb, - }); - - async function onExpanded(expanded: boolean) { - const next = setExpanded(mode, expanded); - setMode(next); - if (app().dat.isowner) { - await updateTagCloudMode(tagCloudModeFromF(next)); - } - } - - async function onChangeBrowse(next: TagCloudModeBrowse) { - const isActive = - (next.kind === 'top' && mode.kind === 'top') || - (next.kind === 'lowerBound' && mode.kind === 'lowerBound' && mode.value === next.value); - if (isActive) { - await onExpanded(!isExpanded(mode)); - } else { - setMode(setExpanded(next, true)); - } - } - - function onChangeRelated(next: TagCloudModeRelated) { - const isActive = - (next.kind === 'related' && mode.kind === 'related') || - (next.kind === 'relatedLowerBound' && - mode.kind === 'relatedLowerBound' && - mode.lowerBound === next.lowerBound); - if (isActive) { - void onExpanded(!isExpanded(mode)); - } else { - setMode(setExpanded(next, true)); - } - } - - const isTagCloudModeRelated = mode.kind === 'related' || mode.kind === 'relatedLowerBound'; - const activeLb = mode.kind === 'relatedLowerBound' ? mode.lowerBound : 0; + if (mode.kind === 'none' || !isExpanded(mode)) return null; - return ( - <div className="tag_cloud mv3"> - <div className="tag_cloud_header mb2"> - {isTagCloudModeRelated ? ( - <> - <button - type="button" - className={`pa1 f7 link thm-hover-link-color mr1${mode.kind === 'related' ? ' b' : ''}`} - title={t('tagCloud.topTagsTitle')} - onClick={() => { - onChangeRelated(makeRelatedMode()); - }} - > - {t('tagCloud.relatedTags')} - </button> - {( - [ - [1, 'tagCloud.allTitle'], - [2, 'tagCloud.min2Title'], - [5, 'tagCloud.min5Title'], - [10, 'tagCloud.min10Title'], - [20, 'tagCloud.min20Title'], - ] as const - ).map(([lb, titleKey]) => ( - <React.Fragment key={lb}> - {lb !== 1 && '‧'} - <button - type="button" - className={`pa1 f7 link thm-hover-link-color${lb === 1 ? ' ml2' : ''}${activeLb === lb ? ' b' : ''}`} - title={t(titleKey)} - onClick={() => { - onChangeRelated(makeRelatedLbMode(lb)); - }} - > - {lb === 1 ? t('filter.all') : lb} - </button> - </React.Fragment> - ))} - </> - ) : ( - <> - <button - type="button" - className={`pa1 f7 link thm-hover-link-color mr1${mode.kind === 'top' ? ' b' : ''}`} - title={t('tagCloud.topTagsTitle')} - onClick={() => void onChangeBrowse({ kind: 'top', expanded: isExpanded(mode) })} - > - {t('tagCloud.topTags')} - </button> - {( - [ - [1, 'tagCloud.allTitle'], - [2, 'tagCloud.min2Title'], - [5, 'tagCloud.min5Title'], - [10, 'tagCloud.min10Title'], - [20, 'tagCloud.min20Title'], - ] as const - ).map(([n, titleKey]) => ( - <React.Fragment key={n}> - {n !== 1 && '‧'} - <button - type="button" - className={`pa1 f7 link thm-hover-link-color${n === 1 ? ' ml2' : ''}${mode.kind === 'lowerBound' && mode.value === n ? ' b' : ''}`} - title={t(titleKey)} - onClick={() => void onChangeBrowse(makeLbMode(n))} - > - {n === 1 ? t('filter.all') : n} - </button> - </React.Fragment> - ))} - </> - )} - <button - type="button" - className="pa1 ml2 f7 link thm-text-faded thm-hover-link-color" - onClick={() => void onExpanded(!isExpanded(mode))} - > - {isExpanded(mode) ? t('tagCloud.hide') : t('tagCloud.show')} - </button> - </div> + const curtags = mode.kind === 'related' || mode.kind === 'relatedLowerBound' ? mode.value : []; - {isExpanded(mode) ? ( - <div className="tag_cloud_body"> - {renderLinks(isTagCloudModeRelated ? mode.value : [], tagcloud)} - </div> - ) : null} - </div> - ); + return <div className="tag_cloud_body">{renderLinks(curtags, tagcloud)}</div>; } function renderLinks(curtags: string[], tagcloud: TagCloud) {
frontend/src/index.tsx view
@@ -11,7 +11,7 @@ import { NList } from './components/NList'; import { NNote } from './components/NNote'; import { NoteBulkEdit } from './components/NoteBulkEdit'; -import { TagCloud } from './components/TagCloud'; +import { bindTagCloudHeader, TagCloudBody } from './components/TagCloud'; import type { AccountSettings, Bookmark, ColorSchemePreference, Note, TagCloudMode } from './types'; import { tagCloudModeToF } from './types'; @@ -54,8 +54,10 @@ export const renderTagCloud = (renderElSelector: string) => (tagCloudMode: TagCloudMode) => () => { const el = selectEl(renderElSelector); if (!el) return; - createRoot(el).render(<TagCloud initialMode={tagCloudModeToF(tagCloudMode)} />); + createRoot(el).render(<TagCloudBody initialMode={tagCloudModeToF(tagCloudMode)} />); }; + +export { bindTagCloudHeader }; export const renderAddForm = (renderElSelector: string) => (bmark: Bookmark) => () => { renderView(renderElSelector, <AddForm initial={bmark} />);
package.yaml view
@@ -1,6 +1,6 @@ name: espial synopsis: Espial is an open-source, web-based bookmarking server. -version: "0.0.40" +version: "0.0.41" description: ! " Espial is an open-source, web-based bookmarking server. @@ -135,10 +135,12 @@ - http-types - iproute - microlens + - network - mtl - parser-combinators - persistent-sqlite == 2.13.3.0 # do not upgrade to 2.13.3.1 due to UTCTime behavior in that version (see https://github.com/yesodweb/persistent/issues/1628) - transformers >= 0.2.2 + - stm when: - condition: "!os(windows)" @@ -185,19 +187,30 @@ - -threaded - -rtsopts - -with-rtsopts=-N + - -Wall dependencies: - espial when: + - condition: flag(werror) + ghc-options: + - -Werror - condition: flag(library-only) buildable: false migration: when: + - condition: flag(werror) + ghc-options: + - -Werror - condition: flag(library-only) buildable: false main: Main.hs source-dirs: - app/migration - ghc-options: -threaded -rtsopts -with-rtsopts=-N + ghc-options: + - -threaded + - -rtsopts + - -with-rtsopts=-N + - -Wall dependencies: - espial - optparse-generic >= 1.2.3 @@ -226,5 +239,9 @@ default: false usebuildinfo: description: read buildinfo from generated file buildinfo/BuildInfo.hs + default: false + manual: true + werror: + description: Treat warnings as errors in executables. Off by default so the package still builds against future GHC versions that add new warnings; enabled for development via stack.yaml. default: false manual: true
src/Application.hs view
@@ -22,12 +22,12 @@ -- Don't forget to add new modules to your cabal file! import Archiver.ArchiveBox07 (archiveBox07Backend) -import Archiver.Backend (ArchiverBackend) +import Archiver.Backend (ArchiveJob (..), ArchiveJobStore (..), ArchiverBackend, ArchiverDB (..), newArchiveQueue, runArchiveQueueWorker) import Archiver.Debug (debugArchiverBackend) import Archiver.WaybackMachine (waybackMachineBackend) import Control.Monad.Logger import Data.Aeson qualified as A -import Database.Persist.Sqlite (ConnectionPool, createSqlitePoolFromInfo, fkEnabled, mkSqliteConnectionInfo, runSqlPool, sqlDatabase, sqlPoolSize) +import Database.Persist.Sqlite (ConnectionPool, createSqlitePoolFromInfo, fkEnabled, mkSqliteConnectionInfo, runSqlPool, sqlDatabase, sqlPoolSize, extraPragmas) import Handler.AccountSettings import Handler.Add import Handler.Archive @@ -51,7 +51,7 @@ import Network.Wai.Handler.WarpTLS (TLSSettings (..), runTLS, tlsSettings) import Network.TLS (Credentials (..), ServerHooks (..)) import Network.TLS qualified as TLS -import Control.Concurrent (forkIO, threadDelay) +import Control.Concurrent (forkIO, killThread, threadDelay) import Network.Wai.Middleware.AcceptOverride import Network.Wai.Middleware.Autohead import Network.Wai.Middleware.Gzip hiding (def) @@ -76,10 +76,11 @@ (appTranslationsHash, appTranslations) <- I18n.loadTranslations appStaticDir appPublicTagCloudCache <- newIORef mempty appLoginRateLimiter <- newIORef mempty + appDBWriteLock <- newDBWriteLock let appTranslate lang = I18n.translate appTranslations lang (I18nNs "translation") appI18nR = LocalesFileR appTranslationsHash [] - mkFoundation appConnPool appArchiver = App {..} - appLogFunc = messageLoggerSource (mkFoundation (error "connPool forced in tempFoundation") Nothing) appLogger + mkFoundation appConnPool appArchiver appArchiveWorkerThreadId = App {..} + appLogFunc = messageLoggerSource (mkFoundation (error "connPool forced in tempFoundation") Nothing Nothing) appLogger startupLogFunc = if appEnableStartupLogging then appLogFunc else \_ _ _ _ -> pure () flip runLoggingT startupLogFunc $ do (logInfoNS "startup" Version.versionSpec) @@ -88,11 +89,36 @@ runSqlPool (runPersistentMigrations appEnableStartupLogging) migrationsPool runSqlPool (runAppMigrations appEnableStartupLogging) migrationsPool appPool <- mkPool appLogFunc True - appArchiver <- mkArchiverBackend appLogFunc appPool - flip runLoggingT startupLogFunc $ do + let archiverDB = + ArchiverDB + { archiverRunDB = \action -> runSqlPool action appPool, + archiverRunDBWrite = \action -> withDBWriteLock appSqliteAppWriteLock appDBWriteLock (runSqlPool action appPool) + } + archiverBackend <- mkArchiverBackend appLogFunc archiverDB + let archiveJobStore = + ArchiveJobStore + { archiveJobStoreInsertMany = \jobs -> + archiverRunDBWrite archiverDB (insertArchiveJobRecords [(userId, bid, unUrl url) | (userId, bid, url) <- jobs]), + archiveJobStoreDelete = \jobId -> + archiverRunDBWrite archiverDB (deleteArchiveJobRecord jobId), + archiveJobStoreLoadAll = + archiverRunDB archiverDB getArchiveJobRecords <&> map toQueuedJob, + archiveJobStoreBookmarkExists = \bid -> + archiverRunDB archiverDB (get bid) <&> isJust + } + toQueuedJob (Entity jobId ArchiveJobRecord {..}) = + (jobId, ArchiveJob archiveJobRecordUserId archiveJobRecordBookmarkId (Url archiveJobRecordHref)) + archiveWorker <- forM archiverBackend $ \archiver -> do + queue <- newArchiveQueue archiveJobStore appArchiveQueueCapacity + workerThreadId <- forkIO $ runArchiveQueueWorker archiver queue (appArchiveRateLimitMs * 1000) $ \e -> + flip runLoggingT appLogFunc ($(logError) $ "Archive worker: " <> tshow e) + pure (archiver, queue, workerThreadId) + let appArchiver = (\(archiver, queue, _) -> (archiver, queue)) <$> archiveWorker + appArchiveWorkerThreadId = (\(_, _, tid) -> tid) <$> archiveWorker + flip runLoggingT startupLogFunc $ do (logInfoNS "startup" $ "archive backend: " <> tshow appArchiveBackend) (logDebugNS "startup" ("language-default: " <> fromI18nLang' appLanguageDefault)) - pure (mkFoundation appPool appArchiver) + pure (mkFoundation appPool appArchiver appArchiveWorkerThreadId) where mkPool :: _ -> Bool -> IO ConnectionPool mkPool logFunc isFkEnabled = @@ -102,9 +128,10 @@ connInfo = mkSqliteConnectionInfo dbPath & set fkEnabled isFkEnabled + & set extraPragmas ["PRAGMA busy_timeout = " <> tshow appSqliteBusyTimeoutMs <> ";"] createSqlitePoolFromInfo connInfo poolSize - mkArchiverBackend :: _ -> ConnectionPool -> IO (Maybe ArchiverBackend) - mkArchiverBackend logFunc pool = do + mkArchiverBackend :: _ -> ArchiverDB -> IO (Maybe ArchiverBackend) + mkArchiverBackend logFunc archiverDB = do case appArchiveBackend of ArchiveBackendDisabled -> pure Nothing ArchiveBackendDebug -> pure (Just (debugArchiverBackend logFunc)) @@ -121,11 +148,11 @@ archiveManager <- do let mSocks = NC.SockSettingsSimple <$> fmap unpack appArchiveSocksProxyHost <*> fmap toEnum appArchiveSocksProxyPort NHT.newTlsManagerWith (NHT.mkManagerSettings def mSocks) - pure $ Just $ waybackMachineBackend accessKey secretKey pool archiveManager logFunc + pure $ Just $ waybackMachineBackend accessKey secretKey archiverDB archiveManager espialUserAgent logFunc _ -> do flip runLoggingT logFunc ($(logWarn) ("Archive backend `wayback-machine` selected but access/secret key missing; archiving disabled")) pure Nothing - mkArchiveBox07Archiver = archiveBox07Backend appSettings pool logFunc + mkArchiveBox07Archiver = archiveBox07Backend appSettings archiverDB logFunc loadFrontendBundleName :: FilePath -> IO Text loadFrontendBundleName staticDir = do @@ -261,7 +288,7 @@ pure (getPort wsettings, foundation, app1) shutdownApp :: App -> IO () -shutdownApp _ = pure () +shutdownApp App {appArchiveWorkerThreadId} = forM_ appArchiveWorkerThreadId killThread -- | Run a handler handler :: Handler a -> IO a
src/Archiver/ArchiveBox07.hs view
@@ -10,7 +10,7 @@ import Data.ByteString.Lazy qualified as BSL import Data.Default (def) import Data.Text qualified as T -import Database.Persist.Sql (ConnectionPool, Key, runSqlPool) +import Database.Persist.Sql (Key) import Model (Bookmark, Url (..), User, updateBookmarkArchiveUrl) import Network.Connection qualified as NC import Network.HTTP.Client @@ -49,7 +49,7 @@ archiveBoxPassword :: Text, archiveBoxTag :: Text, archiveBoxPlugins :: Maybe Text, - archiveBoxConnPool :: ConnectionPool, + archiveBoxDB :: ArchiverDB, archiveBoxManager :: Manager } @@ -60,10 +60,10 @@ archiveBox07Backend :: AppSettings -> - ConnectionPool -> + ArchiverDB -> LogFunc -> IO (Maybe ArchiverBackend) -archiveBox07Backend AppSettings {..} connPool logFunc = flip runLoggingT logFunc $ do +archiveBox07Backend AppSettings {..} archiverDB logFunc = flip runLoggingT logFunc $ do case (nonBlank appArchiveBoxUrl, nonBlank appArchiveBoxUsername, nonBlank appArchiveBoxPassword) of (Nothing, _, _) -> $(logWarn) "Archive backend `archivebox` selected but archivebox-url missing; archiving disabled" >> pure Nothing (_, Nothing, _) -> $(logWarn) "Archive backend `archivebox` selected but archivebox-username missing; archiving disabled" >> pure Nothing @@ -81,14 +81,14 @@ archiveBoxPassword = password, archiveBoxTag = appArchiveBoxTag, archiveBoxPlugins = nonBlank appArchiveBoxPlugins, - archiveBoxConnPool = connPool, + archiveBoxDB = archiverDB, archiveBoxManager = archiveManager } denyHosts = catMaybes [extractHost baseUrl, extractHost publicUrl] pure $ Just ArchiverBackend - { runArchiver = \uid bid _ua url -> + { runArchiver = \uid bid url -> flip runLoggingT logFunc $ _archiveBoxRun ctx uid bid url, isUrlDenylisted = \(Url inputUrl) -> @@ -144,10 +144,7 @@ where storeArchiveUrl archiveUrl = do $(logDebug) $ "storing archive link: " <> archiveUrl - liftIO $ - runSqlPool - (updateBookmarkArchiveUrl userId bookmarkId (Just archiveUrl)) - archiveBoxConnPool + liftIO $ archiverRunDBWrite archiveBoxDB (updateBookmarkArchiveUrl userId bookmarkId (Just archiveUrl)) pluginFormFields = maybe []
src/Archiver/Backend.hs view
@@ -1,10 +1,72 @@ module Archiver.Backend where import ClassyPrelude -import Database.Persist.Sql (Key) -import Model (Bookmark, Url, User, UserAgent) +import Control.Concurrent (threadDelay) +import Database.Persist.Sql (Key, SqlBackend) +import Model (ArchiveJobRecord, Bookmark, Url (..), User) data ArchiverBackend = ArchiverBackend - { runArchiver :: Key User -> Key Bookmark -> UserAgent -> Url -> IO (), + { runArchiver :: Key User -> Key Bookmark -> Url -> IO (), isUrlDenylisted :: Url -> Bool } + +-- | DB actions handed to archiver backends, which run outside the Handler monad. +data ArchiverDB = ArchiverDB + { archiverRunDB :: forall a. ReaderT SqlBackend IO a -> IO a, + archiverRunDBWrite :: forall a. ReaderT SqlBackend IO a -> IO a + } + +-- | A single archive request, queued for a background worker to run through 'runArchiver'. +data ArchiveJob = ArchiveJob (Key User) (Key Bookmark) Url + +data QueuedArchiveJob = QueuedArchiveJob (Key ArchiveJobRecord) ArchiveJob + +-- | durable storage for archive jobs +data ArchiveJobStore = ArchiveJobStore + { archiveJobStoreInsertMany :: [(Key User, Key Bookmark, Url)] -> IO [Key ArchiveJobRecord], + archiveJobStoreDelete :: Key ArchiveJobRecord -> IO (), + archiveJobStoreLoadAll :: IO [(Key ArchiveJobRecord, ArchiveJob)], + archiveJobStoreBookmarkExists :: Key Bookmark -> IO Bool + } + +data ArchiveQueue = ArchiveQueue (TBQueue QueuedArchiveJob) Int ArchiveJobStore + +newArchiveQueue :: (MonadIO m) => ArchiveJobStore -> Int -> m ArchiveQueue +newArchiveQueue store capacity = liftIO do + persisted <- archiveJobStoreLoadAll store + let realCapacity = max capacity (length persisted) + tbqueue <- newTBQueueIO (fromIntegral realCapacity) + atomically (traverse_ (writeTBQueue tbqueue . uncurry QueuedArchiveJob) persisted) + pure (ArchiveQueue tbqueue realCapacity store) + +enqueueArchiveJob :: (MonadIO m) => ArchiveQueue -> ArchiveJob -> m Bool +enqueueArchiveJob queue job = maybe False id . listToMaybe <$> enqueueArchiveJobs queue [job] + +enqueueArchiveJobs :: (MonadIO m) => ArchiveQueue -> [ArchiveJob] -> m [Bool] +enqueueArchiveJobs (ArchiveQueue tbqueue capacity store) jobs = liftIO do + room <- atomically do + len <- lengthTBQueue tbqueue + pure (max 0 (capacity - fromIntegral len)) + let (fitJobs, overflowJobs) = splitAt room jobs + storeIds <- archiveJobStoreInsertMany store [(userId, bookmarkId, url) | ArchiveJob userId bookmarkId url <- fitJobs] + accepted <- atomically $ forM (zip storeIds fitJobs) $ \(storeId, job) -> do + full <- isFullTBQueue tbqueue + unless full (writeTBQueue tbqueue (QueuedArchiveJob storeId job)) + pure (not full) + forM_ (zip storeIds accepted) $ \(storeId, ok) -> unless ok (archiveJobStoreDelete store storeId) + pure (accepted <> (False <$ overflowJobs)) + +runArchiveQueueWorker :: ArchiverBackend -> ArchiveQueue -> Int -> (SomeException -> IO ()) -> IO () +runArchiveQueueWorker archiver@ArchiverBackend {runArchiver} archiveQueue@(ArchiveQueue tbqueue _capacity store) rateLimitMicros onError = + processJobs `catch` \e -> do + onError e `catch` \(_ :: SomeException) -> pure () + threadDelay 1_000_000 + runArchiveQueueWorker archiver archiveQueue rateLimitMicros onError + where + processJobs = forever do + QueuedArchiveJob storeId (ArchiveJob userId bookmarkId url) <- atomically (readTBQueue tbqueue) + -- delete before running: at-most-once, so a crashing/poisoned URL isn't retried forever + archiveJobStoreDelete store storeId + whenM (archiveJobStoreBookmarkExists store bookmarkId) do + runArchiver userId bookmarkId url `catch` onError + threadDelay rateLimitMicros
src/Archiver/Debug.hs view
@@ -13,7 +13,7 @@ debugArchiverBackend :: LogFunc -> ArchiverBackend debugArchiverBackend logFunc = ArchiverBackend - { runArchiver = \uid bid ua url -> flip runLoggingT logFunc $ do - $(logDebug) $ "Debug archiver: would archive URL " <> unUrl url <> " for bookmark ID " <> tshow bid <> " and user ID " <> tshow uid <> " with user agent " <> tshow ua, + { runArchiver = \uid bid url -> flip runLoggingT logFunc $ do + $(logDebug) $ "Debug archiver: would archive URL " <> unUrl url <> " for bookmark ID " <> tshow bid <> " and user ID " <> tshow uid, isUrlDenylisted = const False }
src/Archiver/WaybackMachine.hs view
@@ -9,7 +9,7 @@ import ClassyPrelude import Control.Monad.Logger (LoggingT, logDebug, runLoggingT) import Data.ByteString qualified as BS -import Database.Persist.Sql (ConnectionPool, Key, runSqlPool) +import Database.Persist.Sql (Key) import Model (Bookmark, Url (..), User, UserAgent (UserAgent), updateBookmarkArchiveUrl) import Network.HTTP.Client qualified as NH import Network.HTTP.Types.Status qualified as NH @@ -17,10 +17,10 @@ import Yesod.Default.Main (LogFunc) -- | Wayback Machine backend. -waybackMachineBackend :: Text -> Text -> ConnectionPool -> NH.Manager -> LogFunc -> ArchiverBackend -waybackMachineBackend accessKey secretKey connPool manager logFunc = +waybackMachineBackend :: Text -> Text -> ArchiverDB -> NH.Manager -> UserAgent -> LogFunc -> ArchiverBackend +waybackMachineBackend accessKey secretKey archiverDB manager userAgent logFunc = ArchiverBackend - { runArchiver = \uid bid ua url -> flip runLoggingT logFunc $ _waybackMachineRun accessKey secretKey connPool manager uid bid ua url, + { runArchiver = \uid bid url -> flip runLoggingT logFunc $ _waybackMachineRun accessKey secretKey archiverDB manager userAgent uid bid url, isUrlDenylisted = \(Url url) -> any (`isInfixOf` url) _waybackMachineDenylist } @@ -30,10 +30,10 @@ "web.archive.org" ] -_waybackMachineRun :: Text -> Text -> ConnectionPool -> NH.Manager -> Key User -> Key Bookmark -> UserAgent -> Url -> LoggingT IO () -_waybackMachineRun accessKey secretKey connPool manager userId bookmarkId ua url = do +_waybackMachineRun :: Text -> Text -> ArchiverDB -> NH.Manager -> UserAgent -> Key User -> Key Bookmark -> Url -> LoggingT IO () +_waybackMachineRun accessKey secretKey ArchiverDB {archiverRunDBWrite} manager userAgent userId bookmarkId url = do $(logDebug) $ "Archiving URL with Wayback Machine: " <> unUrl url - let req = _buildWaybackMachineSubmitRequest accessKey secretKey ua url + let req = _buildWaybackMachineSubmitRequest accessKey secretKey userAgent url $(logDebug) $ "Wayback Machine request: " <> tshow req res <- liftIO $ NH.httpLbs req manager let status = NH.responseStatus res @@ -45,7 +45,7 @@ $(logDebug) $ "Archive response status: " <> tshow status <> ", URL result: " <> tshow mArchiveUrl $(logDebug) $ "Archive response body: " <> tshow (NH.responseBody res) forM_ mArchiveUrl $ \archiveUrl -> - liftIO $ runSqlPool (updateBookmarkArchiveUrl userId bookmarkId (Just archiveUrl)) connPool + liftIO $ archiverRunDBWrite (updateBookmarkArchiveUrl userId bookmarkId (Just archiveUrl)) _buildWaybackMachineSubmitRequest :: Text -> Text -> UserAgent -> Url -> NH.Request _buildWaybackMachineSubmitRequest accessKey secretKey (UserAgent ua) (Url href) =
src/Foundation.hs view
@@ -2,8 +2,9 @@ module Foundation where -import Archiver.Backend (ArchiverBackend) +import Archiver.Backend (ArchiveQueue, ArchiverBackend) import ClassyPrelude.Yesod qualified as CP (Lang) +import Control.Concurrent (ThreadId) import Data.ByteString.Char8 qualified as BS8 import Data.CaseInsensitive qualified as CI import Data.IP (fromSockAddr) @@ -28,6 +29,12 @@ -- | Sliding-window login-attempt counters, keyed by e.g. @"ip:1.2.3.4"@ or @"user:alice"@. type LoginRateLimiter = IORef (Map Text (UTCTime, Int)) +-- | Serializes DB write transactions; see 'appDBWriteLock'. +newtype DBWriteLock = DBWriteLock (MVar ()) + +newDBWriteLock :: (MonadIO m) => m DBWriteLock +newDBWriteLock = DBWriteLock <$> newMVar () + data App = App { appSettings :: AppSettings, -- | Settings for static file serving. @@ -40,8 +47,11 @@ appHttpManager :: Manager, -- | Logger appLogger :: Logger, - -- | Active archiver plugin; 'Nothing' disables archiving. - appArchiver :: Maybe ArchiverBackend, + -- | Active archiver plugin paired with its job queue + appArchiver :: Maybe (ArchiverBackend, ArchiveQueue), + -- | Thread running 'Archiver.Backend.runArchiveQueueWorker'; killed by + -- 'Application.shutdownApp' so dev hot-reloads don't leak worker threads. + appArchiveWorkerThreadId :: Maybe ThreadId, -- | i18n translation function appTranslate :: I18nLang -> I18nKey -> Text, -- | Route to the i18n json data @@ -49,7 +59,9 @@ -- | In-memory cache for public tag cloud responses (30s TTL, 1000-entry cap). appPublicTagCloudCache :: PublicTagCloudCache, -- | Login-attempt counters used to throttle the login endpoint. - appLoginRateLimiter :: LoginRateLimiter + appLoginRateLimiter :: LoginRateLimiter, + -- | Serializes DB write transactions to avoid SQLite `SQLITE_BUSY`/snapshot conflicts under concurrent writers. + appDBWriteLock :: DBWriteLock } mkYesodData "App" $(parseRoutesFile "config/routes") @@ -66,6 +78,22 @@ instance YesodPersistRunner App where getDBRunner = defaultGetDBRunner appConnPool +-- | Like 'runDB', but holds 'appDBWriteLock' for the duration of the transaction. +-- +-- (SQLite allows only one writer at a time; under concurrent writers, a read +-- promoted to a write mid-transaction can hit a snapshot conflict that SQLite +-- reports as `SQLITE_BUSY` without retrying (unlike ordinary lock contention)) +runDBWrite :: ReaderT SqlBackend Handler a -> Handler a +runDBWrite action = do + App {appDBWriteLock, appSettings = AppSettings {appSqliteAppWriteLock}} <- getYesod + withDBWriteLock appSqliteAppWriteLock appDBWriteLock (runDB action) + +withDBWriteLock :: (MonadUnliftIO m) => Bool -> DBWriteLock -> m a -> m a +withDBWriteLock writeLockEnabled (DBWriteLock writeLock) action = + if writeLockEnabled + then withMVar writeLock $ \_ -> action + else action + session_timeout_minutes :: Int session_timeout_minutes = 10080 -- (7 days) @@ -99,9 +127,10 @@ -- `maybeAuthId` checks for the validity of the Authorization -- header anyway, but it is still a good idea to limit this -- flexibility to designated routes. - -- For the time being, `AddR` is the only route that accepts an + -- For the time being, `AddR` and `AddBulkR` are the only routes that accept an -- authentication token. Just AddR -> isJust <$> lookupHeader "Authorization" + Just AddBulkR -> isJust <$> lookupHeader "Authorization" _ -> pure False (if dontCheckCsrf then id else defaultCsrfMiddleware) handler @@ -144,9 +173,8 @@ errorHandler :: ErrorResponse -> HandlerFor App TypedContent errorHandler err = do app <- getYesod - session <- getSession - let lang = fromMaybe (appLanguageDefault (appSettings app)) (toI18nLang . decodeUtf8 =<< lookup "_LANG" session) - t = \key -> appTranslate app lang (I18nKey key) + lang <- getCurrentLang LangSourceSession + let t = \key -> appTranslate app lang (I18nKey key) case err of NotFound -> _notFoundErrorHandler (t "error.notFound") InternalError e -> _internalErrorHandler e (t "error.internalError") @@ -213,10 +241,9 @@ mmsg <- getMessage musername <- maybeAuthUsername muser <- (fmap . fmap) snd maybeAuthPair - session <- getSession + lang <- getCurrentLang (LangSourceUserOrSession muser) let msourceCodeUri = appSourceCodeUri (appSettings app) frontendBundleName = appFrontendBundleName app - lang = fromMaybe (appLanguageDefault (appSettings app)) ((muser >>= userLanguage) <|> (toI18nLang . decodeUtf8 =<< lookup "_LANG" session)) t = \key -> appTranslate app lang (I18nKey key) i18nR = appI18nR app pc <- widgetToPageContent do @@ -232,12 +259,11 @@ req <- getRequest app <- getYesod mmsg <- getMessage - session <- getSession muser <- fmap entityVal <$> maybeAuth + lang <- getCurrentLang (LangSourceUserOrSession muser) let musername = fmap userName muser msourceCodeUri = appSourceCodeUri (appSettings app) frontendBundleName = appFrontendBundleName app - lang = fromMaybe (appLanguageDefault (appSettings app)) ((muser >>= userLanguage) <|> (toI18nLang . decodeUtf8 =<< lookup "_LANG" session)) t = \key -> appTranslate app lang (I18nKey key) i18nR = appI18nR app pc <- widgetToPageContent do @@ -248,6 +274,27 @@ $(widgetFile "popup-layout") withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") +-- | Where 'getCurrentLang' may read a language from, besides the app default. +data LangSource + = -- | anonymous/pre-auth pages: session cookie only + LangSourceSession + | -- | a (possibly absent) user's saved language, ignoring the session cookie + LangSourceUser (Maybe User) + | -- | a (possibly absent) user's saved language, falling back to the session cookie + LangSourceUserOrSession (Maybe User) + +getCurrentLang :: (MonadHandler m, HandlerSite m ~ App) => LangSource -> m I18nLang +getCurrentLang source = do + app <- getYesod + let langDefault = appLanguageDefault (appSettings app) + fromSession session = toI18nLang . decodeUtf8 =<< lookup "_LANG" session + case source of + LangSourceSession -> fromMaybe langDefault . fromSession <$> getSession + LangSourceUser muser -> pure (fromMaybe langDefault (muser >>= userLanguage)) + LangSourceUserOrSession muser -> do + session <- getSession + pure (fromMaybe langDefault ((muser >>= userLanguage) <|> fromSession session)) + -- * YesodAuth App instance YesodAuth App where @@ -273,18 +320,16 @@ | not (currentApproot `isPrefixOf` dest) -> deleteSession ultDestKey _ -> pure () app <- getYesod - session <- getSession - let lang = fromMaybe (appLanguageDefault (appSettings app)) (toI18nLang . decodeUtf8 =<< lookup "_LANG" session) - t = \key -> appTranslate app lang (I18nKey key) + lang <- getCurrentLang LangSourceSession + let t = \key -> appTranslate app lang (I18nKey key) setTitle (toHtml ("Espial | " <> t "login.pageTitle")) $(widgetFile "login") dbPostLoginR :: (master ~ App) => AuthHandler master TypedContent dbPostLoginR = do app <- getYesod - session <- getSession - let lang = fromMaybe (appLanguageDefault (appSettings app)) (toI18nLang . decodeUtf8 =<< lookup "_LANG" session) - t = \key -> appTranslate app lang (I18nKey key) + lang <- getCurrentLang LangSourceSession + let t = \key -> appTranslate app lang (I18nKey key) mresult <- runInputPostResult ( dbLoginCreds @@ -337,7 +382,7 @@ muser <- case lookup "password" credsExtra of Just pwd | credsPlugin == dbAuthPluginName -> do rehashAlgo <- appPasswordHashConfig . appSettings <$> getYesod - liftHandler $ runDB $ authenticatePassword rehashAlgo credsIdent pwd + liftHandler $ runDBWrite $ authenticatePassword rehashAlgo credsIdent pwd _ -> pure Nothing case muser of Nothing -> pure (UserError InvalidUsernamePass) @@ -348,8 +393,7 @@ maybeAuth >>= \case Nothing -> $(logWarn) "onLogin: could not find user" Just (Entity user uname) -> do - app <- getYesod - let lang = fromMaybe (appLanguageDefault (appSettings app)) (userLanguage uname) + lang <- getCurrentLang (LangSourceUser (Just uname)) setSession userNameKey (userName uname) setLanguage (fromI18nLang lang) onLogout =
src/Handler/AccountSettings.hs view
@@ -9,8 +9,8 @@ getAccountSettingsR = do app <- getYesod (_, user) <- requireAuthPair - let lang = fromMaybe (appLanguageDefault (appSettings app)) (userLanguage user) - frontendBundleName = appFrontendBundleName app + lang <- getCurrentLang (LangSourceUser (Just user)) + let frontendBundleName = appFrontendBundleName app archiveBackendEnabled = isJust (appArchiver app) t = \key -> appTranslate app lang (I18nKey key) let accountSettingsEl = "accountSettings" :: Text @@ -37,7 +37,7 @@ app <- getYesod userId <- requireAuthId accountSettingsForm <- requireCheckJsonBody - runDB (updateUserFromAccountSettingsForm userId accountSettingsForm) + runDBWrite (updateUserFromAccountSettingsForm userId accountSettingsForm) case _language accountSettingsForm of Nothing -> setLanguage (fromI18nLang (appLanguageDefault (appSettings app))) Just lang -> setLanguage (fromI18nLang lang) @@ -47,13 +47,13 @@ postApiKeyR = do userId <- requireAuthId apiKey <- liftIO generateApiKey - runDB (update userId [UserApiToken CP.=. Just (hashApiKey apiKey)]) + runDBWrite (update userId [UserApiToken CP.=. Just (hashApiKey apiKey)]) pure (A.object ["apiKey" A..= unApiKey apiKey]) deleteApiKeyR :: Handler Value deleteApiKeyR = do userId <- requireAuthId - runDB (update userId [UserApiToken CP.=. Nothing]) + runDBWrite (update userId [UserApiToken CP.=. Nothing]) pure (A.object ["ok" A..= True]) getExportBookmarksJsonR :: Handler TypedContent @@ -83,7 +83,7 @@ body <- importBodyLbs case A.eitherDecode' body of Left e -> sendResponseStatus status400 (pack e :: Text) - Right (fmarks :: [FileBookmark]) -> respondImported =<< runDB (insertFileBookmarks userId fmarks) + Right (fmarks :: [FileBookmark]) -> respondImported =<< runDBWrite (insertFileBookmarks userId fmarks) postImportBookmarksFirefoxR :: Handler () postImportBookmarksFirefoxR = do @@ -91,7 +91,7 @@ body <- importBodyLbs case A.eitherDecode' body of Left e -> sendResponseStatus status400 (pack e :: Text) - Right (node :: FirefoxBookmarkNode) -> respondImported =<< runDB (insertFirefoxBookmarks userId node) + Right (node :: FirefoxBookmarkNode) -> respondImported =<< runDBWrite (insertFirefoxBookmarks userId node) postImportBookmarksNetscapeR :: Handler () postImportBookmarksNetscapeR = do @@ -99,7 +99,7 @@ body <- importBodyLbs case parseNetscapeBookmarks (decodeUtf8 (toStrict body)) of Left e -> sendResponseStatus status400 (pack e :: Text) - Right nbmarks -> respondImported =<< runDB (insertNetscapeBookmarks userId nbmarks) + Right nbmarks -> respondImported =<< runDBWrite (insertNetscapeBookmarks userId nbmarks) postImportNotesJsonR :: Handler () postImportNotesJsonR = do @@ -107,7 +107,7 @@ body <- importBodyLbs case A.eitherDecode' body of Left e -> sendResponseStatus status400 (pack e :: Text) - Right (fnotes :: [FileNote]) -> respondImported =<< runDB (insertFileNotes userId fnotes) + Right (fnotes :: [FileNote]) -> respondImported =<< runDBWrite (insertFileNotes userId fnotes) downloadAttachment :: (ToContent a) => ContentType -> Text -> a -> Handler TypedContent downloadAttachment ct filename body = do @@ -131,8 +131,9 @@ req <- getRequest app <- getYesod (_, user) <- requireAuthPair - let lang = fromMaybe (appLanguageDefault (appSettings app)) (userLanguage user) - t = \key -> appTranslate app lang (I18nKey key) + lang <- getCurrentLang (LangSourceUser (Just user)) + let t = \key -> appTranslate app lang (I18nKey key) + -- demoMode = appDemoMode (appSettings app) defaultLayout $ $(widgetFile "change-password") @@ -140,18 +141,21 @@ postChangePasswordR = do app <- getYesod (userId, user) <- requireAuthPair - let lang = fromMaybe (appLanguageDefault (appSettings app)) (userLanguage user) - t = \key -> appTranslate app lang (I18nKey key) + lang <- getCurrentLang (LangSourceUser (Just user)) + let t = \key -> appTranslate app lang (I18nKey key) + when (appDemoMode (appSettings app)) $ do + setMessage (toHtml (t "changePassword.demoMode")) + redirect ChangePasswordR let hashAlgo = appPasswordHashConfig (appSettings app) runInputPostResult ((,) <$> ireq textField "oldpassword" <*> ireq textField "newpassword") >>= \case FormSuccess (old, new) -> do - runDB (authenticatePassword hashAlgo (userName user) old) >>= \case + runDBWrite (authenticatePassword hashAlgo (userName user) old) >>= \case Nothing -> setMessage (toHtml (t "auth.incorrectOldPassword")) Just _ -> validateNewPassword t new >>= \case Just newValid -> do newHash <- liftIO (hashPasswordWith hashAlgo newValid) - void $ runDB (update userId [UserPasswordHash CP.=. newHash]) + void $ runDBWrite (update userId [UserPasswordHash CP.=. newHash]) setMessage (toHtml (t "auth.passUpdated")) _ -> pure () _ -> setMessage (toHtml (t "auth.missingRequiredFields"))
src/Handler/Add.hs view
@@ -1,8 +1,7 @@ module Handler.Add where -import Data.Aeson.Encoding (encodingToLazyByteString) import Data.Attoparsec.ByteString qualified as AP -import Data.ByteString.Lazy qualified as LBS +import Data.ByteString qualified as BS import Data.Char (ord) import Data.Function ((&)) import Data.Text.Lazy.Builder (toLazyText) @@ -12,7 +11,9 @@ import Import import Network.HTTP.Client qualified as NH import Network.HTTP.Client.TLS qualified as NHT +import Network.PrivateAddress (isDisallowedFetchHost) import Util +import Data.Either (isRight) -- * View @@ -36,7 +37,7 @@ |] toWidgetBody [julius| - app.dat.bmark = #{ toRawJs bookmarkForm }; + app.dat.bmark = #{ toJSON bookmarkForm }; app.dat.archiveBackendEnabled = #{ archiveBackendEnabled }; app.dat.suggestTags = #{ userSuggestTags user }; app.dat.suggestTagsUseReturnKey = #{ userSuggestTagsUseReturnKey user }; @@ -48,7 +49,6 @@ renderAddForm('##{renderEl}')(app.dat.bmark)(); |] where - toRawJs = rawJS . decodeUtf8 . encodingToLazyByteString . toEncoding mkNewBookmarkFormForUrl :: Bool -> Handler BookmarkForm mkNewBookmarkFormForUrl archiveBackendEnabled = do Entity _ user <- requireAuth @@ -66,32 +66,99 @@ postAddR :: Handler Text postAddR = do + app <- getYesod + (_, authUser) <- requireAuthPair + lang <- getCurrentLang (LangSourceUser (Just authUser)) + let t key = appTranslate app lang (I18nKey key) bookmarkForm <- requireCheckJsonBody handleFormSuccess bookmarkForm >>= \case Created bid -> sendStatusJSON created201 bid Updated _ -> sendResponseStatus noContent204 () - Failed s -> sendResponseStatus status400 s + Failed reason -> sendResponseStatus status400 (translateFailedReason t reason) where handleFormSuccess :: BookmarkForm -> Handler (UpsertResult (Key Bookmark)) handleFormSuccess bookmarkForm = do (userId, user) <- requireAuthPair appSettings <- appSettings <$> getYesod case (appAllowNonHttpUrlSchemes appSettings, (parseRequest . unpack . _url) bookmarkForm) of - (False, Nothing) -> pure $ Failed "Invalid URL" + (False, Nothing) -> pure $ Failed (ReasonInvalidInput "") _ -> do let mkbid = toSqlKey <$> _bid bookmarkForm tags = maybe [] normalizeTags (_tags bookmarkForm) bm <- liftIO $ bookmarkFormToBookmark userId bookmarkForm - res <- runDB (upsertBookmark userId mkbid bm tags) + res <- runDBWrite (upsertBookmark userId mkbid bm tags) case res of - Created kbid - | fromMaybe (userArchiveDefault user) (_archiveRequested bookmarkForm) -> - whenM - (shouldArchiveBookmark bm) - (void $ async $ archiveBookmarkUrl kbid (Url (bookmarkHref bm))) + Created kbid | fromMaybe (userArchiveDefault user) (_archiveRequested bookmarkForm) -> _archive kbid bm + Updated kbid | isJust (_archiveRequested bookmarkForm) -> _archive kbid bm _ -> pure () pure res + _archive :: Key Bookmark -> Bookmark -> Handler () + _archive = archiveBookmarkUrl + translateFailedReason :: (Text -> Text) -> FailedReason -> Text + translateFailedReason t reason = case reason of + ReasonUnauthorized -> t "error.upsertUnauthorized" + ReasonNotFound -> t "error.upsertNotFound" + ReasonHrefUsedByOther -> t "error.upsertHrefUsedByOther" + ReasonConflictWithNewer -> t "error.upsertConflictWithNewer" + ReasonInvalidInput detail -> if null detail then t "error.upsertInvalidInput" else detail +postAddBulkR :: Handler Text +postAddBulkR = do + bookmarkForms <- requireCheckJsonBody + maxItems <- appAddBulkMaxItems . appSettings <$> getYesod + when (length bookmarkForms > maxItems) do + sendResponseStatus status413 ("Too many items: max " <> tshow maxItems :: Text) + ress <- handleFormSuccess bookmarkForms + sendStatusJSON ok200 (fmap _toJson ress) + where + handleFormSuccess :: [BookmarkForm] -> Handler [UpsertResult (Key Bookmark)] + handleFormSuccess bookmarkForms = do + (userId, user) <- requireAuthPair + appSettings <- appSettings <$> getYesod + let allowNonHttpUrlSchemes = appAllowNonHttpUrlSchemes appSettings + urlResults = parseRequest . unpack . _url <$> bookmarkForms + marked = + [ if allowNonHttpUrlSchemes || isRight urlResult + then Right bookmarkForm + else Left $ ReasonInvalidInput $ either (("Invalid URL: " <>) . pack . show) (const "Invalid URL") urlResult + | (bookmarkForm, urlResult) <- zip bookmarkForms urlResults + ] + validForms = [bookmarkForm | Right bookmarkForm <- marked] + mkbids :: [Maybe (Key Bookmark)] = (fmap toSqlKey . _bid) <$> validForms + tagss = maybe [] normalizeTags <$> (fmap _tags validForms) + bms <- liftIO $ traverse (bookmarkFormToBookmark userId) validForms + validRess <- runDBWrite (upsertBookmarks userId mkbids bms tagss) + let toArchive = + catMaybes + [ case res of + Created kbid | fromMaybe (userArchiveDefault user) (_archiveRequested bookmarkForm) -> Just (kbid, bm) + Updated kbid | isJust (_archiveRequested bookmarkForm) -> Just (kbid, bm) + _ -> Nothing + | (res, bm, bookmarkForm) <- zip3 validRess bms validForms + ] + unless (null toArchive) (archiveBookmarkUrls toArchive) + pure (mergeBulkAddResults marked validRess) + + -- | Re-interleaves per-item validation failures with the upsert results of the valid subset, restoring the original request order. + mergeBulkAddResults :: [Either FailedReason BookmarkForm] -> [UpsertResult (Key Bookmark)] -> [UpsertResult (Key Bookmark)] + mergeBulkAddResults (Left err : rest) valids = Failed (err) : mergeBulkAddResults rest valids + mergeBulkAddResults (Right _ : rest) (v : valids) = v : mergeBulkAddResults rest valids + mergeBulkAddResults _ _ = [] + + _toJson (Created a) = object ["status" .= ("created" :: Text), "id" .= a] + _toJson (Updated a) = object ["status" .= ("updated" :: Text), "id" .= a] + _toJson (Failed reason) = object ["status" .= ("failed" :: Text), "reason" .= failedReasonTag reason, "detail" .= failedReasonDetail reason] + where + failedReasonTag :: FailedReason -> Text + failedReasonTag = \case + ReasonUnauthorized -> "unauthorized" + ReasonNotFound -> "not_found" + ReasonConflictWithNewer -> "conflict_with_newer" + ReasonHrefUsedByOther -> "href_used_by_other" + ReasonInvalidInput _ -> "invalid_input" + failedReasonDetail (ReasonInvalidInput detail) | not (null detail) = Just detail + failedReasonDetail _ = Nothing + postLookupTitleR :: Handler () postLookupTitleR = do void requireAuthId @@ -100,18 +167,35 @@ Left _ -> sendResponseStatus noContent204 () Right title -> sendResponseStatus ok200 title where + maxTitleFetchBytes :: Int + maxTitleFetchBytes = 1024 * 1024 + fetchPageTitle :: Url -> Handler (Either String Text) fetchPageTitle url = do - req <- buildPageTitleRequest - res <- liftIO $ NH.httpLbs req =<< NHT.getGlobalManager - let body = LBS.toStrict (responseBody res) - pure (decodeHtmlBs <$> parseTitle body) + let req = buildPageTitleRequest + disallowed <- liftIO $ isDisallowedFetchHost (unpack (decodeUtf8 (NH.host req))) + if disallowed + then pure (Left "URL host is not allowed") + else do + manager <- liftIO NHT.getGlobalManager + body <- liftIO $ NH.withResponse req manager (readBoundedBody . NH.responseBody) + pure (decodeHtmlBs <$> parseTitle body) `catch` ( \(e :: SomeException) -> do $(logError) $ (pack . show) e pure (Left (show e)) ) where + readBoundedBody :: NH.BodyReader -> IO ByteString + readBoundedBody br = BS.concat <$> go 0 + where + go total + | total >= maxTitleFetchBytes = pure [] + | otherwise = do + chunk <- NH.brRead br + if null chunk + then pure [] + else (chunk :) <$> go (total + BS.length chunk) parseTitle bs = flip AP.parseOnly bs do _ <- skipAnyTill (AP.string "<title") @@ -120,15 +204,15 @@ AP.takeTill (== lt) decodeHtmlBs = toStrict . toLazyText . htmlEncodedText . decodeUtf8 skipAnyTill end = go where go = end $> () <|> AP.anyWord8 *> go - buildPageTitleRequest = do + buildPageTitleRequest = let UserAgent ua = browserUserAgent - pure $ NH.parseRequest_ (unpack (unUrl url)) & \r -> - r - { NH.requestHeaders = - [ ("Cache-Control", "max-age=0"), - ("User-Agent", encodeUtf8 ua) - ] - } + in NH.parseRequest_ (unpack (unUrl url)) & \r -> + r + { NH.requestHeaders = + [ ("Cache-Control", "max-age=0"), + ("User-Agent", encodeUtf8 ua) + ] + } postTagSuggestionsR :: Handler Text postTagSuggestionsR = do
src/Handler/Archive.hs view
@@ -1,39 +1,39 @@ module Handler.Archive where -import Archiver.Backend (ArchiverBackend (..)) -import Handler.Common (espialUserAgent) +import Archiver.Backend (ArchiveJob (..), ArchiverBackend (..), enqueueArchiveJobs) import Import +import Network.PrivateAddress (isDisallowedFetchUrl) postArchiveBookmarkR :: Int64 -> Handler () postArchiveBookmarkR bid = do let kbid = toSqlKey bid (userId, _) <- requireAuthPair runDB (get kbid) >>= \case - Just bm - | (bookmarkUserId bm == userId) -> - whenM (shouldArchiveBookmark bm) - $ archiveBookmarkUrl kbid (Url (bookmarkHref bm)) + Just bm | (bookmarkUserId bm == userId) -> archiveBookmarkUrl kbid bm _ -> notFound -archiveBookmarkUrl :: Key Bookmark -> Url -> Handler () -archiveBookmarkUrl kbid url = do - mArchiver <- appArchiver <$> getYesod - case mArchiver of - Nothing -> pure () - Just ArchiverBackend {runArchiver, isUrlDenylisted} - | isUrlDenylisted url -> pure () - | otherwise -> - ( do - ua <- espialUserAgent - userId <- requireAuthId - liftIO $ runArchiver userId kbid ua url - ) - `catch` (\(e :: SomeException) -> ($(logError) $ (pack . show) e) >> throwIO e) +archiveBookmarkUrl :: Key Bookmark -> Bookmark -> Handler () +archiveBookmarkUrl kbid bm = archiveBookmarkUrls [(kbid, bm)] +archiveBookmarkUrls :: [(Key Bookmark, Bookmark)] -> Handler () +archiveBookmarkUrls kbidBms = do + app <- getYesod + case appArchiver app of + Just (_, queue) -> do + userId <- requireAuthId + jobs <- fmap catMaybes $ forM kbidBms $ \(kbid, bm) -> do + should <- shouldArchiveBookmark bm + pure (if should then Just (ArchiveJob userId kbid (Url (bookmarkHref bm))) else Nothing) + unless (null jobs) + $ void (enqueueArchiveJobs queue jobs) + `catch` (\(e :: SomeException) -> $(logError) ("Failed to enqueue archive jobs for bookmarks " <> tshow (map fst kbidBms) <> ": " <> tshow e)) + _ -> pure () + shouldArchiveBookmark :: Bookmark -> Handler Bool shouldArchiveBookmark bm = do b <- runMaybeT $ do - ArchiverBackend {isUrlDenylisted} <- MaybeT (appArchiver <$> getYesod) + (ArchiverBackend {isUrlDenylisted}, _) <- MaybeT (appArchiver <$> getYesod) guard (bookmarkShared bm) guard (not (isUrlDenylisted (Url (bookmarkHref bm)))) + guard . not =<< liftIO (isDisallowedFetchUrl (bookmarkHref bm)) pure (isJust b)
src/Handler/Common.hs view
@@ -2,10 +2,9 @@ module Handler.Common where import Data.Aeson qualified as A -import Data.ByteString.Char8 qualified as BS8 import Data.FileEmbed (embedFile) +import Data.Text qualified as T import Import -import Network.Wai (requestHeaderHost) import Text.Read import Util (format8601z, parseTimeText) @@ -30,23 +29,53 @@ lookupPagingParams prefix = (,) <$> getsetUrlSessionParam "count" (fromMaybe "" prefix) - <*> getUrlParam (fromMaybe "" prefix <> "page") + <*> getUrlParam (pagingPageParam prefix) +pagingPageParam :: Maybe Text -> Text +pagingPageParam prefix = fromMaybe "" prefix <> "page" + pagingCursorBeforeParam :: Text pagingCursorBeforeParam = "before" pagingCursorAfterParam :: Text pagingCursorAfterParam = "after" -formatEntityPagingCursorTimeBm :: Entity Bookmark -> Text -formatEntityPagingCursorTimeBm = format8601z . bookmarkTime . entityVal +sortParam :: Text +sortParam = "sort" -formatEntityPagingCursorTimeNt :: Entity Note -> Text -formatEntityPagingCursorTimeNt = format8601z . noteCreated . entityVal +orderParam :: Text +orderParam = "order" -parsePagingCursorTime :: Text -> Maybe UTCTime -parsePagingCursorTime = parseTimeText +-- | "~" is unreserved in URL queries and cannot occur in the ISO8601 time +pagingCursorSeparator :: Text +pagingCursorSeparator = "~" +formatEntityPagingCursorBm :: Entity Bookmark -> Text +formatEntityPagingCursorBm (Entity bid bm) = + format8601z (bookmarkTime bm) <> pagingCursorSeparator <> tshow (fromSqlKey bid) + +parsePagingCursorBm :: Text -> Maybe BookmarkCursor +parsePagingCursorBm t = case T.splitOn pagingCursorSeparator t of + [timeText] -> flip BookmarkCursor Nothing <$> parseTimeText timeText + [timeText, idText] -> + BookmarkCursor + <$> parseTimeText timeText + <*> (Just <$> parsePagingCursorKey idText) + _ -> Nothing + +formatEntityPagingCursorNt :: Entity Note -> Text +formatEntityPagingCursorNt (Entity nid nt) = + format8601z (noteCreated nt) <> pagingCursorSeparator <> tshow (fromSqlKey nid) + +parsePagingCursorNt :: Text -> Maybe NoteCursor +parsePagingCursorNt t = case T.splitOn pagingCursorSeparator t of + [timeText] -> flip NoteCursor Nothing <$> parseTimeText timeText + [timeText, idText] -> + NoteCursor + <$> parseTimeText timeText + <*> (Just <$> parsePagingCursorKey idText) + _ -> Nothing + formatEntityPagingCursorKey :: (ToBackendKey SqlBackend record) => Entity record -> Text formatEntityPagingCursorKey = tshow . fromSqlKey . entityKey @@ -63,10 +92,8 @@ parsePagingCursorParams mkBefore mkAfter mbefore mafter = (mkBefore =<< mbefore) <|> (mkAfter =<< mafter) -espialUserAgent :: Handler UserAgent -espialUserAgent = do - mHost <- requestHeaderHost . reqWaiRequest <$> getRequest - pure $ UserAgent $ pack $ "espial-" <> maybe "" (BS8.unpack . BS8.takeWhile (/= ':')) mHost +espialUserAgent :: UserAgent +espialUserAgent = UserAgent "espial" browserUserAgent :: UserAgent browserUserAgent =
src/Handler/Docs.hs view
@@ -8,7 +8,7 @@ getDocsSearchR = do app <- getYesod muser <- fmap entityVal <$> maybeAuth - let lang = fromMaybe (appLanguageDefault (appSettings app)) (muser >>= userLanguage) - t = \key -> appTranslate app lang (I18nKey key) + lang <- getCurrentLang (LangSourceUser muser) + let t = \key -> appTranslate app lang (I18nKey key) popupLayout $(widgetFile "docs-search")
src/Handler/Edit.hs view
@@ -17,7 +17,7 @@ patchReadR :: Int64 -> Handler Html patchReadR bid = do userId <- requireAuthId - runDB do + runDBWrite do let k_bid = toSqlKey bid _ <- _requireResource userId k_bid update k_bid [BookmarkToRead =. False] @@ -26,20 +26,20 @@ deleteDeleteR :: Int64 -> Handler Html deleteDeleteR bid = do userId <- requireAuthId - runDB do + runDBWrite do let k_bid = toSqlKey bid _ <- _requireResource userId k_bid delete k_bid pure "" -postBmBulkR :: Handler () -postBmBulkR = do +postBmBulkEditR :: Handler () +postBmBulkEditR = do app <- getYesod (userId, user) <- requireAuthPair - let lang = fromMaybe (appLanguageDefault (appSettings app)) (userLanguage user) - t key = appTranslate app lang (I18nKey key) + lang <- getCurrentLang (LangSourceUser (Just user)) + let t key = appTranslate app lang (I18nKey key) bmBulkForm <- requireCheckJsonBody - result <- runDB $ bookmarksBulkEdit userId bmBulkForm + result <- runDBWrite $ bookmarksBulkEdit userId bmBulkForm case result of Left err -> sendResponseStatus status409 (translateBulkEditError t err) Right editedCount -> do @@ -67,7 +67,7 @@ _setSelected :: Int64 -> Bool -> Handler Html _setSelected bid selected = do userId <- requireAuthId - runDB do + runDBWrite do let k_bid = toSqlKey bid bm <- _requireResource userId k_bid update k_bid [BookmarkSelected =. selected]
src/Handler/Notes.hs view
@@ -20,8 +20,8 @@ _getNotes unamep@(UserNameP uname) sharedp' = do app <- getYesod muser <- fmap entityVal <$> maybeAuth - let lang = fromMaybe (appLanguageDefault (appSettings app)) (muser >>= userLanguage) - previewNotes = maybe True userPreviewNotes muser + lang <- getCurrentLang (LangSourceUser muser) + let previewNotes = maybe True userPreviewNotes muser frontendBundleName = appFrontendBundleName app t = \key -> appTranslate app lang (I18nKey key) tc = \key n -> @@ -29,32 +29,60 @@ in T.replace "{{count}}" (tshow n) (t (key <> suffix)) mauthuname <- maybeAuthUsername (limit', page') <- lookupPagingParams (Just "n") - let queryp = "query" + let isowner = Just uname == mauthuname + queryp = "query" beforep = pagingCursorBeforeParam afterp = pagingCursorAfterParam - mquery <- lookupGetParam queryp - mcursor <- parsePagingCursorParams (fmap PagingCursorBefore . parsePagingCursorTime) (fmap PagingCursorAfter . parsePagingCursorTime) <$> lookupGetParam beforep <*> lookupGetParam afterp + sortp = sortParam + orderp = orderParam + -- non-owners get no search box and no query filtering, so their listing + -- stays on the plain shared/time-indexed path + mquery <- if isowner then lookupGetParam queryp else pure Nothing + -- non-owners always get the default created-time ordering; dropping the + -- sort params keeps their paging on the indexed time cursor and off the + -- offset path + msort <- if isowner then lookupGetParam sortp else pure Nothing + morder <- if isowner then lookupGetParam orderp else pure Nothing + mcursor <- + parsePagingCursorParams + (fmap PagingCursorBefore . parsePagingCursorNt) + (fmap PagingCursorAfter . parsePagingCursorNt) + <$> lookupGetParam beforep + <*> lookupGetParam afterp let limit = maybe 20 (min 160 . fromIntegral) limit' page = maybe 1 fromIntegral page' + nsort = parseNoteSortParams msort morder + NoteSort nsortField nsortDir = nsort + paging = mkNotePaging nsort mcursor page + isCursorPaging = case paging of + PageByCursor {} -> True + PageByOffset {} -> False mqueryp = fmap (queryp,) mquery - isowner = Just uname == mauthuname + msortp = fmap (sortp,) msort + morderp = fmap (orderp,) morder sharedp = if isowner then sharedp' else SharedPublic - (bcount, notes, hasEarlier, hasLater) <- runDB do + (bcount, notes, hasPrevious, hasNext) <- runDB do Entity userId user <- getBy404 (UniqueUserName uname) when (not isowner && userPrivacyLock user) (redirect (AuthR LoginR)) - getNoteList userId mquery mcursor sharedp limit page + getNoteList userId mquery sharedp paging limit let mfirstNote = headMay notes mlastNote = lastMay notes - mqueryEarlierp = - fmap - (beforep,) - (formatEntityPagingCursorTimeNt <$> mlastNote) - mqueryLaterp = - fmap - (afterp,) - (formatEntityPagingCursorTimeNt <$> mfirstNote) + -- the earlier link anchors at the oldest row on the page and the later + -- link at the newest; which list end holds which depends on direction + (moldestNote, mnewestNote) = case nsort of + NoteSort NoteSortCreated SortAsc -> (mfirstNote, mlastNote) + _ -> (mlastNote, mfirstNote) + pagep = pagingPageParam (Just "n") + -- offset paging has no cursor entities to anchor on, so it pages by + -- adjacent page numbers instead of before/after cursors + mqueryPreviousp + | isCursorPaging = fmap (beforep,) (formatEntityPagingCursorNt <$> moldestNote) + | otherwise = Just (pagep, tshow (page - 1)) + mqueryNextp + | isCursorPaging = fmap (afterp,) (formatEntityPagingCursorNt <$> mnewestNote) + | otherwise = Just (pagep, tshow (page + 1)) req <- getRequest mroute <- getCurrentRoute defaultLayout do @@ -72,6 +100,7 @@ app.dat.previewNotes = #{ previewNotes }; app.dat.sharedp = #{ toJSON sharedp }; app.dat.query = #{ toJSON mquery }; + app.dat.sort = #{ toJSON nsort }; |] toWidget [hamlet| @@ -140,14 +169,14 @@ renderNote('##{renderEl}')(app.dat.note)(); |] -postNoteBulkR :: Handler () -postNoteBulkR = do +postNoteBulkEditR :: Handler () +postNoteBulkEditR = do app <- getYesod (userId, user) <- requireAuthPair - let lang = fromMaybe (appLanguageDefault (appSettings app)) (userLanguage user) - t key = appTranslate app lang (I18nKey key) + lang <- getCurrentLang (LangSourceUser (Just user)) + let t key = appTranslate app lang (I18nKey key) noteBulkForm <- requireCheckJsonBody - result <- runDB $ notesBulkEdit userId noteBulkForm + result <- runDBWrite $ notesBulkEdit userId noteBulkForm case result of Left err -> sendResponseStatus status409 (translateBulkEditError t err) Right editedCount -> do @@ -173,7 +202,7 @@ deleteDeleteNoteR :: Int64 -> Handler Html deleteDeleteNoteR nid = do userId <- requireAuthId - runDB do + runDBWrite do let k_nid = toSqlKey nid _ <- requireResource userId k_nid delete k_nid @@ -181,11 +210,23 @@ postAddNoteR :: Handler Text postAddNoteR = do + app <- getYesod + (_, user) <- requireAuthPair + lang <- getCurrentLang (LangSourceUser (Just user)) + let t key = appTranslate app lang (I18nKey key) noteForm <- requireCheckJsonBody _handleFormSuccess noteForm >>= \case - Created nid -> sendStatusJSON created201 nid - Updated _ -> sendResponseStatus noContent204 () - Failed s -> sendResponseStatus status400 s + Created note -> sendStatusJSON created201 note + Updated note -> sendStatusJSON ok200 note + Failed reason -> sendResponseStatus status400 (translateFailedReason t reason) + where + translateFailedReason :: (Text -> Text) -> FailedReason -> Text + translateFailedReason t = \case + ReasonUnauthorized -> t "error.upsertUnauthorized" + ReasonNotFound -> t "error.upsertNotFound" + ReasonHrefUsedByOther -> t "error.upsertHrefUsedByOther" + ReasonConflictWithNewer -> t "error.upsertConflictWithNewer" + ReasonInvalidInput _ -> t "error.upsertInvalidInput" requireResource :: UserId -> Key Note -> DBM Handler Note requireResource userId k_nid = do @@ -194,11 +235,11 @@ then pure nnote else notFound -_handleFormSuccess :: NoteForm -> Handler (UpsertResult (Key Note)) +_handleFormSuccess :: NoteForm -> Handler (UpsertResult (Entity Note)) _handleFormSuccess noteForm = do userId <- requireAuthId note <- liftIO $ _toNote userId noteForm - runDB (upsertNote userId knid note) + runDBWrite (upsertNote userId knid note) where knid = toSqlKey <$> (_id noteForm >>= \i -> if i > 0 then Just i else Nothing) @@ -272,20 +313,29 @@ getNotesFeedR unamep@(UserNameP uname) = do mauthuname <- maybeAuthUsername (limit', page') <- lookupPagingParams (Just "n") - mquery <- lookupGetParam "query" + let isowner = Just uname == mauthuname + mquery <- if isowner then lookupGetParam "query" else pure Nothing + msort <- if isowner then lookupGetParam sortParam else pure Nothing + morder <- if isowner then lookupGetParam orderParam else pure Nothing mbefore <- lookupGetParam pagingCursorBeforeParam mafter <- lookupGetParam pagingCursorAfterParam - let mcursor = parsePagingCursorParams (fmap PagingCursorBefore . parsePagingCursorTime) (fmap PagingCursorAfter . parsePagingCursorTime) mbefore mafter + let mcursor = + parsePagingCursorParams + (fmap PagingCursorBefore . parsePagingCursorNt) + (fmap PagingCursorAfter . parsePagingCursorNt) + mbefore + mafter let limit = maybe 20 (min 160 . fromIntegral) limit' page = maybe 1 fromIntegral page' - isowner = Just uname == mauthuname + nsort = parseNoteSortParams msort morder + paging = mkNotePaging nsort mcursor page sharedp = if isowner then SharedAll else SharedPublic (_, notes, _, _) <- runDB do Entity userId user <- getBy404 (UniqueUserName uname) when (not isowner && userPrivacyLock user) (redirect (AuthR LoginR)) - getNoteList userId mquery mcursor sharedp limit page + getNoteList userId mquery sharedp paging limit render <- getUrlRender let (descr :: Html) = toHtml $ H.text (uname <> " notes") entries = map (noteToRssEntry render unamep) notes
src/Handler/User.hs view
@@ -2,7 +2,6 @@ module Handler.User where -import Data.Aeson.Encoding (encodingToLazyByteString) import Data.Map qualified as Map import Data.Text qualified as T import Data.Time (diffUTCTime) @@ -31,8 +30,8 @@ _getUser unamep@(UserNameP uname) sharedp' filterp' (TagsP pathtags) = do app <- getYesod muser <- fmap entityVal <$> maybeAuth - let lang = fromMaybe (appLanguageDefault (appSettings app)) (muser >>= userLanguage) - t = \key -> appTranslate app lang (I18nKey key) + lang <- getCurrentLang (LangSourceUser muser) + let t = \key -> appTranslate app lang (I18nKey key) frontendBundleName = appFrontendBundleName app (limit', page') <- lookupPagingParams Nothing let limit = maybe 120 (min 160 . fromIntegral) limit' @@ -46,21 +45,35 @@ queryp = "query" :: Text beforep = pagingCursorBeforeParam afterp = pagingCursorAfterParam - mquery <- lookupGetParam queryp + sortp = sortParam + orderp = orderParam + -- non-owners get no search box and no query filtering, so their listing + -- stays on the plain shared/time-indexed path + mquery <- if isowner then lookupGetParam queryp else pure Nothing + -- non-owners always get the default time ordering; dropping the sort params + -- keeps their paging on the indexed time cursor and off the offset path + msort <- if isowner then lookupGetParam sortp else pure Nothing + morder <- if isowner then lookupGetParam orderp else pure Nothing mcursor <- parsePagingCursorParams - (fmap PagingCursorBefore . parsePagingCursorTime) - (fmap PagingCursorAfter . parsePagingCursorTime) + (fmap PagingCursorBefore . parsePagingCursorBm) + (fmap PagingCursorAfter . parsePagingCursorBm) <$> lookupGetParam beforep <*> lookupGetParam afterp - (suggestTags, suggestTagsUseReturnKey, publicTagCloud, bcount, btmarks, hasEarlier, hasLater) <- runDB $ do + let bsort = parseBookmarkSortParams msort morder + BookmarkSort bsortField bsortDir = bsort + paging = mkBookmarkPaging bsort mcursor page + isCursorPaging = case paging of + PageByCursor {} -> True + PageByOffset {} -> False + (suggestTags, suggestTagsUseReturnKey, publicTagCloud, bcount, btmarks, hasPrevious, hasNext) <- runDB $ do Entity userId user <- getBy404 (UniqueUserName uname) when (not isowner && userPrivacyLock user) (redirect (AuthR LoginR)) - (bcount, btmarks, hasEarlier, hasLater) <- - bookmarksTagsQuery userId isowner sharedp filterp pathtags mquery mcursor limit page - pure (userSuggestTags user, userSuggestTagsUseReturnKey user, userPublicTagCloud user, bcount, btmarks, hasEarlier, hasLater) + (bcount, btmarks, hasPrevious, hasNext) <- + bookmarksTagsQuery userId isowner sharedp filterp pathtags mquery paging limit + pure (userSuggestTags user, userSuggestTagsUseReturnKey user, userPublicTagCloud user, bcount, btmarks, hasPrevious, hasNext) when (bcount == 0) (case filterp of FilterSingle _ -> notFound; _ -> pure ()) mroute <- getCurrentRoute tagCloudMode <- getTagCloudMode isowner publicTagCloud pathtags @@ -68,23 +81,31 @@ let archiveBackendEnabled = isJust (appArchiver app) mfirstBookmark = headMay (map fst btmarks) mlastBookmark = lastMay (map fst btmarks) - mqueryEarlierp = - fmap - (beforep,) - (formatEntityPagingCursorTimeBm <$> mlastBookmark) - mqueryLaterp = - fmap - (afterp,) - (formatEntityPagingCursorTimeBm <$> mfirstBookmark) + -- the earlier link anchors at the oldest row on the page and the later + -- link at the newest; which list end holds which depends on direction + (moldestBookmark, mnewestBookmark) = case bsort of + BookmarkSort BookmarkSortTime SortAsc -> (mfirstBookmark, mlastBookmark) + _ -> (mlastBookmark, mfirstBookmark) + pagep = pagingPageParam Nothing + -- offset paging has no cursor entities to anchor on, so it pages by + -- adjacent page numbers instead of before/after cursors + mqueryPreviousp + | isCursorPaging = fmap (beforep,) (formatEntityPagingCursorBm <$> moldestBookmark) + | otherwise = Just (pagep, tshow (page - 1)) + mqueryNextp + | isCursorPaging = fmap (afterp,) (formatEntityPagingCursorBm <$> mnewestBookmark) + | otherwise = Just (pagep, tshow (page + 1)) mqueryp = fmap (queryp,) mquery + msortp = fmap (sortp,) msort + morderp = fmap (orderp,) morder renderEl = "bookmarks" :: Text - tagCloudRenderEl = "tagCloud" :: Text showTagCloud = isowner || publicTagCloud tagCloudUrl :: Text tagCloudUrl | isowner = render UserTagCloudR | publicTagCloud = render (UserPublicTagCloudR unamep) | otherwise = "" + TagCloudHamletBindings {..} = mkTagCloudHamletBindings tagCloudMode defaultLayout do let pager = $(widgetFile "pager") @@ -93,7 +114,7 @@ $(widgetFile "user") toWidgetBody [julius| - app.dat.bmarks = #{ toRawJs $ toBookmarkFormListForViewer isowner btmarks } || []; + app.dat.bmarks = #{ toJSON $ toBookmarkFormListForViewer isowner btmarks } || []; app.dat.bcount = #{ toJSON bcount }; app.dat.isowner = #{ isowner }; app.dat.suggestTags = #{ suggestTags }; @@ -103,6 +124,7 @@ app.dat.sharedp = #{ toJSON sharedp }; app.dat.tags = #{ toJSON pathtags }; app.dat.query = #{ toJSON mquery }; + app.dat.sort = #{ toJSON bsort }; app.userR = "@{UserR unamep}"; app.tagCloudMode = #{ toJSON $ tagCloudMode } || {}; app.tagCloudR = #{toJSON tagCloudUrl}; @@ -110,21 +132,68 @@ toWidget [hamlet| <script type="module"> - import { renderBookmarks, renderTagCloud, renderBulkEdit } from '@{StaticR (StaticRoute ["js", frontendBundleName] [])}' + import { renderBookmarks, renderTagCloud, bindTagCloudHeader, renderBulkEdit } from '@{StaticR (StaticRoute ["js", frontendBundleName] [])}' setTimeout(() => { renderBookmarks('##{renderEl}')(app.dat.bmarks)(); }, 0); setTimeout(() => { - renderTagCloud('##{tagCloudRenderEl}')(app.tagCloudMode)(); + renderTagCloud('##{tagCloudBodyEl}')(app.tagCloudMode)(); }, 0); + setTimeout(() => { + bindTagCloudHeader('##{tagCloudHeaderEl}')(); + }, 0); $if isowner setTimeout(() => { renderBulkEdit('#bulkEditRenderEl')(app.dat.bcount)(); }, 0); |] - where - toRawJs = rawJS . decodeUtf8 . encodingToLazyByteString . toEncoding +-- | Values the "user" hamlet template needs to render the tag cloud header +-- (mode toggle, min-count filters, expand/collapse), derived from the +-- session/route-resolved 'TagCloudMode'. +data TagCloudHamletBindings = TagCloudHamletBindings + { tagCloudHeaderEl :: Text, + tagCloudBodyEl :: Text, + isTagCloudModeRelated :: Bool, + tagCloudExpanded :: Bool, + tagCloudActiveTop :: Bool, + tagCloudActiveRelated :: Bool, + tagCloudActiveLowerBound :: Maybe Int, + tagCloudActiveRelatedLowerBound :: Maybe Int, + tagCloudCounts :: [(Int, Text)] + } + +mkTagCloudHamletBindings :: TagCloudMode -> TagCloudHamletBindings +mkTagCloudHamletBindings tagCloudMode = + TagCloudHamletBindings + { tagCloudHeaderEl = "tagCloudHeader", + tagCloudBodyEl = "tagCloudBody", + isTagCloudModeRelated = case tagCloudMode of + TagCloudModeRelated _ _ -> True + TagCloudModeRelatedLowerBound _ _ _ -> True + _ -> False, + tagCloudExpanded = isExpanded tagCloudMode, + tagCloudActiveTop = case tagCloudMode of + TagCloudModeTop _ -> True + _ -> False, + tagCloudActiveRelated = case tagCloudMode of + TagCloudModeRelated _ _ -> True + _ -> False, + tagCloudActiveLowerBound = case tagCloudMode of + TagCloudModeTopLowerBound _ n -> Just n + _ -> Nothing, + tagCloudActiveRelatedLowerBound = case tagCloudMode of + TagCloudModeRelatedLowerBound _ _ n -> Just n + _ -> Nothing, + tagCloudCounts = + [ (1, "tagCloud.allTitle"), + (2, "tagCloud.min2Title"), + (5, "tagCloud.min5Title"), + (10, "tagCloud.min10Title"), + (20, "tagCloud.min20Title") + ] + } + -- Form postUserTagCloudR :: Handler () @@ -226,19 +295,25 @@ queryp = "query" :: Text beforep = pagingCursorBeforeParam afterp = pagingCursorAfterParam - mquery <- lookupGetParam queryp + sortp = sortParam + orderp = orderParam + mquery <- if isowner then lookupGetParam queryp else pure Nothing + msort <- if isowner then lookupGetParam sortp else pure Nothing + morder <- if isowner then lookupGetParam orderp else pure Nothing mcursor <- parsePagingCursorParams - (fmap PagingCursorBefore . parsePagingCursorTime) - (fmap PagingCursorAfter . parsePagingCursorTime) + (fmap PagingCursorBefore . parsePagingCursorBm) + (fmap PagingCursorAfter . parsePagingCursorBm) <$> lookupGetParam beforep <*> lookupGetParam afterp + let bsort = parseBookmarkSortParams msort morder + paging = mkBookmarkPaging bsort mcursor page (_, btmarks, _, _) <- runDB $ do Entity userId user <- getBy404 (UniqueUserName uname) when (not isowner && userPrivacyLock user) (redirect (AuthR LoginR)) - bookmarksTagsQuery userId isowner sharedp filterp pathtags mquery mcursor limit page + bookmarksTagsQuery userId isowner sharedp filterp pathtags mquery paging limit let (descr :: Html) = toHtml $ H.text ("Bookmarks saved by " <> uname) entries = map bookmarkToRssEntry btmarks updated <- case maximumMay (map feedEntryUpdated entries) of
src/Model.hs view
@@ -20,8 +20,9 @@ import Data.Map.Strict qualified as Map import Data.Set qualified as Set import Data.Text qualified as T +import Data.Text.Lazy.Builder qualified as TLB import Database.Esqueleto.Experimental hiding ((<&>)) -import Database.Esqueleto.Internal.Internal (unsafeSqlFunction) +import Database.Esqueleto.Internal.Internal (unsafeSqlFunction, unsafeSqlValue) import Model.Custom import Text.Blaze (ToMarkup, toMarkup) import Types @@ -41,6 +42,7 @@ UniqueAppMigrationDbVersion dbVersion deriving Show Eq Ord +-- | List of Espial versions that have interacted with the database AppVersion appVersionSpec Text appVersion Text @@ -99,6 +101,14 @@ updated UTCTime UniqueUserNoteSlug userId slug deriving Show Eq Ord + +-- | Durable record of a pending archive job +ArchiveJobRecord + userId UserId OnDeleteCascade + bookmarkId BookmarkId OnDeleteCascade + href Text + created UTCTime + deriving Show Eq Ord |] -- * Custom types @@ -171,10 +181,177 @@ | PagingCursorAfter a deriving (Eq, Show, Read) -type BookmarkPagingCursorTime = PagingCursor UTCTime +-- | Keyset cursor position: the id breaks ties between rows sharing a +-- timestamp so paging never skips or repeats them. Nothing falls back to a +-- time-only boundary (older links and the view-in-context link carry no id). +data BookmarkCursor = BookmarkCursor + { bookmarkCursorTime :: UTCTime, + bookmarkCursorId :: Maybe BookmarkId + } + deriving (Eq, Show) -type NotePagingCursorTime = PagingCursor UTCTime +type BookmarkPagingCursor = PagingCursor BookmarkCursor +data NoteCursor = NoteCursor + { noteCursorCreated :: UTCTime, + noteCursorId :: Maybe NoteId + } + deriving (Eq, Show) + +type NotePagingCursor = PagingCursor NoteCursor + +-- * Sorting + +data SortDirection + = SortAsc + | SortDesc + deriving (Eq, Show, Read, Bounded, Enum) + +instance ToJSON SortDirection where toJSON = A.String . fromSortDirection + +instance FromJSON SortDirection where + parseJSON = A.withText "SortDirection" \s -> + maybe (fail $ "Invalid sort direction: '" <> unpack s <> "'") pure (toSortDirection s) + +fromSortDirection :: (IsString a) => SortDirection -> a +fromSortDirection = \case + SortAsc -> "asc" + SortDesc -> "desc" + +toSortDirection :: (Ord s, IsString s) => s -> Maybe SortDirection +toSortDirection = inverseMap fromSortDirection + +data BookmarkSortField + = BookmarkSortTime + | BookmarkSortTitle + | BookmarkSortTagCount + | BookmarkSortUrl + deriving (Eq, Show, Read, Bounded, Enum) + +instance ToJSON BookmarkSortField where toJSON = A.String . fromBookmarkSortField + +instance FromJSON BookmarkSortField where + parseJSON = A.withText "BookmarkSortField" \s -> + maybe (fail $ "Invalid sort field: '" <> unpack s <> "'") pure (toBookmarkSortField s) + +fromBookmarkSortField :: (IsString a) => BookmarkSortField -> a +fromBookmarkSortField = \case + BookmarkSortTime -> "time" + BookmarkSortTitle -> "title" + BookmarkSortTagCount -> "tagcount" + BookmarkSortUrl -> "url" + +toBookmarkSortField :: (Ord s, IsString s) => s -> Maybe BookmarkSortField +toBookmarkSortField = inverseMap fromBookmarkSortField + +data BookmarkSort = BookmarkSort BookmarkSortField SortDirection + deriving (Eq, Show, Read) + +instance ToJSON BookmarkSort where + toJSON (BookmarkSort field dir) = + A.object ["field" A..= field, "direction" A..= dir] + +instance FromJSON BookmarkSort where + parseJSON = A.withObject "BookmarkSort" $ \o -> + BookmarkSort <$> o A..: "field" <*> o A..: "direction" + +defaultBookmarkSort :: BookmarkSort +defaultBookmarkSort = BookmarkSort BookmarkSortTime SortDesc + +-- | Parses the "sort"/"order" querystring params into a 'BookmarkSort'. The +-- field falls back to 'defaultBookmarkSort's field for any missing or +-- unrecognized value; the direction falls back to a field-dependent default +-- (see 'defaultBookmarkSortDirection') rather than always following +-- 'defaultBookmarkSort'. +parseBookmarkSortParams :: Maybe Text -> Maybe Text -> BookmarkSort +parseBookmarkSortParams msort morder = + BookmarkSort field (fromMaybe (defaultBookmarkSortDirection field) (toSortDirection =<< morder)) + where + BookmarkSort defaultField _ = defaultBookmarkSort + field = fromMaybe defaultField (toBookmarkSortField =<< msort) + +-- | Time sorts default to newest-first; every other field defaults to +-- ascending, since there is no comparable recency bias for it. +defaultBookmarkSortDirection :: BookmarkSortField -> SortDirection +defaultBookmarkSortDirection = \case + BookmarkSortTime -> SortDesc + _ -> SortAsc + +data Paging sort cursor + = PageByCursor SortDirection (Maybe (PagingCursor cursor)) + | PageByOffset sort Page + deriving (Eq, Show) + +type BookmarkPaging = Paging BookmarkSort BookmarkCursor + +-- | Cursor (before/after) paging is defined for time ordering in either +-- direction; every other sort pages by offset, where "earlier"/"later" +-- just mean the previous/next page rather than carrying any temporal +-- meaning. +mkBookmarkPaging :: BookmarkSort -> Maybe BookmarkPagingCursor -> Page -> BookmarkPaging +mkBookmarkPaging bsort mcursor page = case bsort of + BookmarkSort BookmarkSortTime dir -> PageByCursor dir mcursor + _ -> PageByOffset bsort page + +data NoteSortField + = NoteSortCreated + | NoteSortTitle + deriving (Eq, Show, Read, Bounded, Enum) + +instance ToJSON NoteSortField where toJSON = A.String . fromNoteSortField + +instance FromJSON NoteSortField where + parseJSON = A.withText "NoteSortField" \s -> + maybe (fail $ "Invalid sort field: '" <> unpack s <> "'") pure (toNoteSortField s) + +fromNoteSortField :: (IsString a) => NoteSortField -> a +fromNoteSortField = \case + NoteSortCreated -> "created" + NoteSortTitle -> "title" + +toNoteSortField :: (Ord s, IsString s) => s -> Maybe NoteSortField +toNoteSortField = inverseMap fromNoteSortField + +data NoteSort = NoteSort NoteSortField SortDirection + deriving (Eq, Show, Read) + +instance ToJSON NoteSort where + toJSON (NoteSort field dir) = + A.object ["field" A..= field, "direction" A..= dir] + +instance FromJSON NoteSort where + parseJSON = A.withObject "NoteSort" $ \o -> + NoteSort <$> o A..: "field" <*> o A..: "direction" + +defaultNoteSort :: NoteSort +defaultNoteSort = NoteSort NoteSortCreated SortDesc + +-- | Parses the "sort"/"order" querystring params into a 'NoteSort'. The +-- field falls back to 'defaultNoteSort's field for any missing or +-- unrecognized value; the direction falls back to a field-dependent default +-- (see 'defaultNoteSortDirection') rather than always following +-- 'defaultNoteSort'. +parseNoteSortParams :: Maybe Text -> Maybe Text -> NoteSort +parseNoteSortParams msort morder = + NoteSort field (fromMaybe (defaultNoteSortDirection field) (toSortDirection =<< morder)) + where + NoteSort defaultField _ = defaultNoteSort + field = fromMaybe defaultField (toNoteSortField =<< msort) + +-- | Time sorts default to newest-first; every other field defaults to +-- ascending, since there is no comparable recency bias for it. +defaultNoteSortDirection :: NoteSortField -> SortDirection +defaultNoteSortDirection = \case + NoteSortCreated -> SortDesc + _ -> SortAsc + +type NotePaging = Paging NoteSort NoteCursor + +mkNotePaging :: NoteSort -> Maybe NotePagingCursor -> Page -> NotePaging +mkNotePaging nsort mcursor page = case nsort of + NoteSort NoteSortCreated dir -> PageByCursor dir mcursor + _ -> PageByOffset nsort page + -- * I18n -- | Translation map: language -> namespace -> key -> translation @@ -297,6 +474,10 @@ sqliteLikeContains :: SqlExpr (Value Text) -> Text -> SqlExpr (Value Bool) sqliteLikeContains col = sqliteLike (\v -> "%" <> escapeLike v <> "%") "\\" col +-- Equivalent to: col LIKE escaped_term || '%' ESCAPE '\' +sqliteLikePrefix :: SqlExpr (Value Text) -> Text -> SqlExpr (Value Bool) +sqliteLikePrefix col = sqliteLike (\v -> escapeLike v <> "%") "\\" col + -- | Escape wildcards in a string for use in a LIKE pattern, so that _ and % match literally. escapeLike :: Text -> Text escapeLike = T.replace "_" "\\_" . T.replace "%" "\\%" . T.replace "\\" "\\\\" @@ -331,11 +512,10 @@ FilterP -> [Tag] -> Maybe Text -> - Maybe BookmarkPagingCursorTime -> + BookmarkPaging -> Limit -> - Page -> DB (Int, [(Entity Bookmark, Maybe Text)], Bool, Bool) -bookmarksTagsQuery userId isowner sharedp filterp tags mquery mcursor limit' page = do +bookmarksTagsQuery userId isowner sharedp filterp tags mquery paging limit' = do total <- fmap (sum . fmap unValue) @@ -353,7 +533,7 @@ PagingCursorAfter after -> where_ (isAfterCursor b after) orderBy (bookmarkOrder b) limit (limit' + 1) -- fetch one extra row to determine if there are more rows in the given direction - offset ((page - 1) * limit') + offset pageOffset pure ( b, subSelect $ from (table @BookmarkTag) >>= \t -> do @@ -368,28 +548,102 @@ ) let hasMoreInQueryDirection = fromIntegral (length rows) > limit' pageRows = take (fromIntegral limit') rows - hasEarlier = - case mcursor of - Just (PagingCursorAfter _) -> not (null pageRows) - _ -> hasMoreInQueryDirection - hasLater = - case mcursor of - Just (PagingCursorAfter _) -> hasMoreInQueryDirection - Just (PagingCursorBefore _) -> not (null pageRows) - Nothing -> False - pure (total, finalizeRows pageRows, hasEarlier, hasLater) + -- cursor flags are temporal and independent of display direction; + -- offset flags just mean the previous/next page exists + (hasPrevious, hasNext) = case paging of + PageByOffset _ page -> (page > 1, hasMoreInQueryDirection) + PageByCursor _ (Just (PagingCursorBefore _)) -> (hasMoreInQueryDirection, not (null pageRows)) + PageByCursor _ (Just (PagingCursorAfter _)) -> (not (null pageRows), hasMoreInQueryDirection) + PageByCursor SortDesc Nothing -> (hasMoreInQueryDirection, False) + PageByCursor SortAsc Nothing -> (False, hasMoreInQueryDirection) + pure (total, finalizeRows pageRows, hasPrevious, hasNext) where - bookmarkOrder b = case mcursor of - Just (PagingCursorAfter _) -> [asc (b ^. BookmarkTime), asc (b ^. BookmarkId)] - _ -> [desc (b ^. BookmarkTime), desc (b ^. BookmarkId)] - finalizeRows = case mcursor of - Just (PagingCursorAfter _) -> reverse -- because of asc order fetch for after cursor, reverse to get newest first order + mcursor = case paging of + PageByCursor _ c -> c + PageByOffset _ _ -> Nothing + pageOffset = case paging of + PageByCursor _ _ -> 0 + PageByOffset _ page -> (page - 1) * limit' + -- a before cursor always scans desc through older rows and an after + -- cursor asc through newer ones, so limit takes the rows adjacent to the + -- cursor; finalizeRows restores display order when the scan opposes it + bookmarkOrder b = case paging of + PageByCursor _ (Just (PagingCursorBefore _)) -> timeOrder SortDesc b + PageByCursor _ (Just (PagingCursorAfter _)) -> timeOrder SortAsc b + PageByCursor dir Nothing -> timeOrder dir b + PageByOffset bsort _ -> case bsort of + BookmarkSort BookmarkSortTime dir -> + timeOrder dir b + BookmarkSort BookmarkSortTitle SortAsc -> + [asc (lower_ (b ^. BookmarkDescription)), asc (b ^. BookmarkId)] + BookmarkSort BookmarkSortTitle SortDesc -> + [desc (lower_ (b ^. BookmarkDescription)), desc (b ^. BookmarkId)] + BookmarkSort BookmarkSortTagCount SortAsc -> + [asc (bookmarkTagCountExpr isowner b), asc (b ^. BookmarkId)] + BookmarkSort BookmarkSortTagCount SortDesc -> + [desc (bookmarkTagCountExpr isowner b), desc (b ^. BookmarkId)] + BookmarkSort BookmarkSortUrl SortAsc -> + [asc (bookmarkHrefNoSchemeExpr b), asc (b ^. BookmarkId)] + BookmarkSort BookmarkSortUrl SortDesc -> + [desc (bookmarkHrefNoSchemeExpr b), desc (b ^. BookmarkId)] + timeOrder dir b = case dir of + SortDesc -> [desc (b ^. BookmarkTime), desc (b ^. BookmarkId)] + SortAsc -> [asc (b ^. BookmarkTime), asc (b ^. BookmarkId)] + finalizeRows = case paging of + PageByCursor SortDesc (Just (PagingCursorAfter _)) -> reverse + PageByCursor SortAsc (Just (PagingCursorBefore _)) -> reverse _ -> id - isBeforeCursor b before = - ((b ^. BookmarkTime) Database.Esqueleto.Experimental.<. val before) - isAfterCursor b after = - ((b ^. BookmarkTime) Database.Esqueleto.Experimental.>. val after) + isBeforeCursor b (BookmarkCursor t mbid) = case mbid of + Nothing -> timeLt + Just bid -> + timeLt + ||. ((b ^. BookmarkTime ==. val t) &&. ((b ^. BookmarkId) Database.Esqueleto.Experimental.<. val bid)) + where + timeLt = (b ^. BookmarkTime) Database.Esqueleto.Experimental.<. val t + isAfterCursor b (BookmarkCursor t mbid) = case mbid of + Nothing -> timeGt + Just bid -> + timeGt + ||. ((b ^. BookmarkTime ==. val t) &&. ((b ^. BookmarkId) Database.Esqueleto.Experimental.>. val bid)) + where + timeGt = (b ^. BookmarkTime) Database.Esqueleto.Experimental.>. val t +-- | Number of tags on a bookmark, for sorting by tag count. Excludes +-- dot-prefixed (private) tags for non-owners, matching the tag list built +-- alongside it in 'bookmarksTagsQuery'. +bookmarkTagCountExpr :: Bool -> SqlExpr (Entity Bookmark) -> SqlExpr (Value (Maybe Int)) +bookmarkTagCountExpr isowner b = + subSelect $ from (table @BookmarkTag) >>= \t -> do + where_ (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId) + when + (not isowner) + (where_ (not_ (t ^. BookmarkTagTag `like` val ".%"))) + pure countRows + +-- | Bookmark href with a leading "<scheme>://" stripped, for sorting by URL +-- while ignoring scheme. The '://' delimiter and the 0/3 literals are +-- spliced as raw SQL (not bind parameters) so this expression matches, +-- token-for-token, the idx_bookmark_href_no_scheme expression indexes +-- created in Model.Migrations.operation_create_initial_indexes -- SQLite +-- can only use an expression index when the query expression is parsed +-- identically to the indexed expression, and bind parameters never match +-- literals. +-- Keep both sides in sync if this expression ever changes. +bookmarkHrefNoSchemeExpr :: SqlExpr (Entity Bookmark) -> SqlExpr (Value Text) +bookmarkHrefNoSchemeExpr b = + case_ + [when_ (schemeEnd Database.Esqueleto.Experimental.>. sqlIntLit 0) then_ (sqliteSubstr href (schemeEnd +. sqlIntLit 3))] + (else_ href) + where + href = b ^. BookmarkHref + schemeEnd = sqliteInstr href "://" + sqlIntLit :: Int -> SqlExpr (Value Int) + sqlIntLit n = unsafeSqlValue (TLB.fromString (show n)) + sqliteSubstr col start = unsafeSqlFunction "substr" (col, start) + sqliteInstr col str = unsafeSqlFunction "instr" (col, sqlStrLit str) + where + sqlStrLit t = unsafeSqlValue ("'" <> TLB.fromText (T.replace "'" "''" t) <> "'") + bookmarkWhereClause :: Key User -> SharedP -> @@ -431,33 +685,38 @@ bookmarkLikeExpr b term = fromRight p_allFields (P.parseOnly p_onefield term) where toLikeB field s = sqliteLikeContains (b ^. field) s + toExactB field s = sqliteLikeExact (b ^. field) s + tagsExpr match term' = + exists $ from (table @BookmarkTag) >>= \t -> + where_ + $ (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId) + &&. match (t ^. BookmarkTagTag) term' p_allFields = toLikeB BookmarkHref term ||. toLikeB BookmarkDescription term ||. toLikeB BookmarkExtended term - ||. exists - ( from (table @BookmarkTag) >>= \t -> - where_ - $ (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId) - &&. sqliteLikeContains (t ^. BookmarkTagTag) term - ) + ||. tagsExpr sqliteLikeContains term p_onefield = p_url <|> p_title <|> p_description <|> p_tags <|> p_after <|> p_before where - p_url = ("url:" <|> "u:") *> fmap (toLikeB BookmarkHref) P.takeText - p_title = ("title:" <|> "ti:") *> fmap (toLikeB BookmarkDescription) P.takeText - p_description = ("description:" <|> "d:") *> fmap (toLikeB BookmarkExtended) P.takeText + p_url = p_textField ("url" <|> "u") BookmarkHref + p_title = p_textField ("title" <|> "ti") BookmarkDescription + p_description = p_textField ("description" <|> "d") BookmarkExtended p_tags = - ("tags:" <|> "t:") - *> fmap - ( \term' -> - exists $ from (table @BookmarkTag) >>= \t -> - where_ - $ (t ^. BookmarkTagBookmarkId ==. b ^. BookmarkId) - &&. sqliteLikeContains (t ^. BookmarkTagTag) term' - ) - P.takeText + ("tags" <|> "t") + *> ( P.char ':' + *> fmap (tagsExpr sqliteLikeContains) P.takeText + <|> P.char '=' + *> fmap (tagsExpr sqliteLikeExact) P.takeText + ) p_after = ("after:" <|> "a:") *> fmap ((b ^. BookmarkTime >=.) . val) (parseTimeText =<< P.takeText) p_before = ("before:" <|> "b:") *> fmap ((b ^. BookmarkTime <=.) . val) (parseTimeText =<< P.takeText) + p_textField name field = + name + *> ( P.char ':' + *> fmap (toLikeB field) P.takeText + <|> P.char '=' + *> fmap (toExactB field) P.takeText + ) -- * BulkEdit types @@ -676,15 +935,17 @@ parseSearchQuery toExpr = fmap where_ . either (const Nothing) Just . P.parseOnly andE where - andE = foldl1 (&&.) <$> P.many1 (P.skipSpace *> orE <|> tokenTermE) + andE = foldl1 (&&.) <$> P.many1 (P.skipSpace *> orE) orE = foldl1 (||.) <$> tokenTermE `P.sepBy1` P.char '|' - tokenTermE = negE termE <|> termE + tokenTermE = negE (groupE <|> termE) <|> groupE <|> termE where negE p = not_ <$> (P.char '-' *> p) + groupE = P.char '(' *> andE <* P.skipSpace <* P.char ')' termE = toExpr <$> (fieldTerm <|> quotedTerm <|> simpleTerm) - fieldTerm = concat <$> sequence [simpleTerm, P.string ":", quotedTerm <|> simpleTerm] + fieldTerm = concat <$> sequence [fieldName, P.string ":" <|> P.string "=", quotedTerm <|> simpleTerm] + fieldName = P.takeWhile1 (\c -> not (isSpace c) && c /= ':' && c /= '=' && c /= '|' && c /= '(' && c /= ')') quotedTerm = PC.between (P.char '"') (P.char '"') (P.takeWhile1 (/= '"')) - simpleTerm = P.takeWhile1 (\c -> not (isSpace c) && c /= ':' && c /= '|') + simpleTerm = P.takeWhile1 (\c -> not (isSpace c) && c /= ':' && c /= '|' && c /= '(' && c /= ')') withTags :: Key Bookmark -> DB [Entity BookmarkTag] withTags key = selectList [BookmarkTagBookmarkId CP.==. key] [Asc BookmarkTagSeq] @@ -695,8 +956,8 @@ getNote userKey slug = selectFirst [NoteUserId CP.==. userKey, NoteSlug CP.==. slug] [] -getNoteList :: Key User -> Maybe Text -> Maybe NotePagingCursorTime -> SharedP -> Limit -> Page -> DB (Int, [Entity Note], Bool, Bool) -getNoteList key mquery mcursor sharedp limit' page = do +getNoteList :: Key User -> Maybe Text -> SharedP -> NotePaging -> Limit -> DB (Int, [Entity Note], Bool, Bool) +getNoteList key mquery sharedp paging limit' = do total <- fmap (sum . fmap unValue) @@ -714,34 +975,62 @@ PagingCursorAfter after -> where_ (isAfterCursor b after) orderBy (noteOrder b) limit (limit' + 1) -- fetch one extra row to determine if there are more rows in the given direction - offset ((page - 1) * limit') + offset pageOffset pure b let hasMoreInQueryDirection = fromIntegral (length rows) > limit' pageRows = take (fromIntegral limit') rows - hasEarlier = - case mcursor of - Just (PagingCursorAfter _) -> not (null pageRows) - _ -> hasMoreInQueryDirection - hasLater = - case mcursor of - Just (PagingCursorAfter _) -> hasMoreInQueryDirection - Just (PagingCursorBefore _) -> not (null pageRows) - Nothing -> False - pure (total, finalizeRows pageRows, hasEarlier, hasLater) + -- cursor flags are temporal and independent of display direction; + -- offset flags just mean the previous/next page exists + (hasPrevious, hasNext) = case paging of + PageByOffset _ page -> (page > 1, hasMoreInQueryDirection) + PageByCursor _ (Just (PagingCursorBefore _)) -> (hasMoreInQueryDirection, not (null pageRows)) + PageByCursor _ (Just (PagingCursorAfter _)) -> (not (null pageRows), hasMoreInQueryDirection) + PageByCursor SortDesc Nothing -> (hasMoreInQueryDirection, False) + PageByCursor SortAsc Nothing -> (False, hasMoreInQueryDirection) + pure (total, finalizeRows pageRows, hasPrevious, hasNext) where _whereClause = noteWhereClause key sharedp mquery - noteOrder b = - case mcursor of - Just (PagingCursorAfter _) -> [asc (b ^. NoteCreated), asc (b ^. NoteId)] - _ -> [desc (b ^. NoteCreated), desc (b ^. NoteId)] - finalizeRows = - case mcursor of - Just (PagingCursorAfter _) -> reverse -- because of asc order fetch for after cursor, reverse to get newest first order - _ -> id - isBeforeCursor b before = - (b ^. NoteCreated) Database.Esqueleto.Experimental.<. val before - isAfterCursor b after = - (b ^. NoteCreated) Database.Esqueleto.Experimental.>. val after + mcursor = case paging of + PageByCursor _ c -> c + PageByOffset _ _ -> Nothing + pageOffset = case paging of + PageByCursor _ _ -> 0 + PageByOffset _ page -> (page - 1) * limit' + -- a before cursor always scans desc through older rows and an after + -- cursor asc through newer ones, so limit takes the rows adjacent to the + -- cursor; finalizeRows restores display order when the scan opposes it + noteOrder b = case paging of + PageByCursor _ (Just (PagingCursorBefore _)) -> createdOrder SortDesc b + PageByCursor _ (Just (PagingCursorAfter _)) -> createdOrder SortAsc b + PageByCursor dir Nothing -> createdOrder dir b + PageByOffset nsort _ -> case nsort of + NoteSort NoteSortCreated dir -> + createdOrder dir b + NoteSort NoteSortTitle SortAsc -> + [asc (lower_ (b ^. NoteTitle)), asc (b ^. NoteId)] + NoteSort NoteSortTitle SortDesc -> + [desc (lower_ (b ^. NoteTitle)), desc (b ^. NoteId)] + createdOrder dir b = case dir of + SortDesc -> [desc (b ^. NoteCreated), desc (b ^. NoteId)] + SortAsc -> [asc (b ^. NoteCreated), asc (b ^. NoteId)] + finalizeRows = case paging of + PageByCursor SortDesc (Just (PagingCursorAfter _)) -> reverse + PageByCursor SortAsc (Just (PagingCursorBefore _)) -> reverse + _ -> id + isBeforeCursor b (NoteCursor t mnid) = case mnid of + Nothing -> createdLt + Just nid -> + createdLt + ||. ((b ^. NoteCreated ==. val t) &&. ((b ^. NoteId) Database.Esqueleto.Experimental.<. val nid)) + where + createdLt = (b ^. NoteCreated) Database.Esqueleto.Experimental.<. val t + isAfterCursor b (NoteCursor t mnid) = case mnid of + Nothing -> createdGt + Just nid -> + createdGt + ||. ((b ^. NoteCreated ==. val t) &&. ((b ^. NoteId) Database.Esqueleto.Experimental.>. val nid)) + where + createdGt = (b ^. NoteCreated) Database.Esqueleto.Experimental.>. val t noteWhereClause :: Key User -> SharedP -> Maybe Text -> SqlExpr (Entity Note) -> SqlQuery () noteWhereClause key sharedp mquery b = do @@ -756,14 +1045,22 @@ toLikeExpr term = fromRight p_allFields (P.parseOnly p_onefield term) where toLikeN field s = sqliteLikeContains (b ^. field) s + toExactN field s = sqliteLikeExact (b ^. field) s p_allFields = toLikeN NoteTitle term ||. toLikeN NoteText term p_onefield = p_title <|> p_text <|> p_markdown <|> p_after <|> p_before where - p_title = ("title:" <|> "ti:") *> fmap (toLikeN NoteTitle) P.takeText - p_text = ("description:" <|> "d:") *> fmap (toLikeN NoteText) P.takeText + p_title = p_textField ("title" <|> "ti") NoteTitle + p_text = p_textField ("description" <|> "d") NoteText p_markdown = ("markdown:" <|> "m:") *> fmap ((b ^. NoteIsMarkdown ==.) . val) (parseBoolText =<< P.takeText) p_after = ("after:" <|> "a:") *> fmap ((b ^. NoteCreated >=.) . val) (parseTimeText =<< P.takeText) p_before = ("before:" <|> "b:") *> fmap ((b ^. NoteCreated <=.) . val) (parseTimeText =<< P.takeText) + p_textField name field = + name + *> ( P.char ':' + *> fmap (toLikeN field) P.takeText + <|> P.char '=' + *> fmap (toExactN field) P.takeText + ) -- * Note BulkEdit @@ -1008,65 +1305,93 @@ btags <- lift $ withTags (entityKey bmark) pure (bmark, btags) -data UpsertResult a = Created a | Updated a | Failed String - deriving (Show, Eq, Functor) +data FailedReason + = ReasonUnauthorized + | ReasonNotFound + | ReasonConflictWithNewer + | ReasonHrefUsedByOther + | ReasonInvalidInput Text + deriving (Show, Eq) -maybeUpsertResult :: UpsertResult a -> Maybe a -maybeUpsertResult (Created a) = Just a -maybeUpsertResult (Updated a) = Just a -maybeUpsertResult _ = Nothing +data UpsertResult a = Created a | Updated a | Failed FailedReason + deriving (Show, Eq, Functor) upsertBookmark :: Key User -> Maybe (Key Bookmark) -> Bookmark -> [Text] -> DB (UpsertResult (Key Bookmark)) -upsertBookmark userId _ bm _ | userId /= bookmarkUserId bm = pure (Failed "unauthorized") +upsertBookmark userId _ bm _ | userId /= bookmarkUserId bm = pure (Failed ReasonUnauthorized) upsertBookmark userId mbid bm tags = do res <- case mbid of Just bid -> get bid >>= \case - Just prev_bm - | userId == bookmarkUserId prev_bm -> - replaceBookmark bid prev_bm - Just _ -> pure (Failed "unauthorized") - _ -> pure (Failed "not found") + Nothing -> pure (Failed ReasonNotFound) + Just prev_bm | userId /= bookmarkUserId prev_bm -> pure (Failed ReasonUnauthorized) + Just prev_bm -> do + getBy (UniqueUserHref userId (bookmarkHref bm)) >>= \case + Just (Entity otherBid _) | otherBid /= bid -> pure (Failed ReasonHrefUsedByOther) + _ -> replaceBookmark bid prev_bm Nothing -> getBy (UniqueUserHref userId (bookmarkHref bm)) >>= \case - Just (Entity bid prev_bm) - | userId == bookmarkUserId prev_bm -> - replaceBookmark bid prev_bm - Just _ -> pure (Failed "unauthorized") - _ -> Created <$> insert bm + Nothing -> Created <$> insert bm + Just (Entity _ prev_bm) | userId /= bookmarkUserId prev_bm -> pure (Failed ReasonUnauthorized) + Just (Entity bid prev_bm) -> replaceBookmark bid prev_bm forM_ (maybeUpsertResult res) (insertTags (bookmarkUserId bm)) pure res where - prepareReplace prev_bm = - if bookmarkHref bm /= bookmarkHref prev_bm - then bm {bookmarkSlug = bookmarkSlug prev_bm, bookmarkArchiveHref = Nothing} - else bm {bookmarkSlug = bookmarkSlug prev_bm, bookmarkArchiveHref = bookmarkArchiveHref prev_bm} + maybeUpsertResult (Created a) = Just a + maybeUpsertResult (Updated a) = Just a + maybeUpsertResult _ = Nothing replaceBookmark bid prev_bm = do - replace bid (prepareReplace prev_bm) + replace bid (prepareBookmarkReplace prev_bm) deleteTags bid pure (Updated bid) deleteTags bid = deleteWhere [BookmarkTagBookmarkId CP.==. bid] insertTags userId' bid' = insertMany_ (mkBookmarkTags userId' bid' tags) + -- \| Preserves the existing bookmark's slug (and, unless the href changed, its archive url). + prepareBookmarkReplace :: Bookmark -> Bookmark + prepareBookmarkReplace prev_bm = + if bookmarkHref bm /= bookmarkHref prev_bm + then bm {bookmarkSlug = bookmarkSlug prev_bm, bookmarkArchiveHref = Nothing} + else bm {bookmarkSlug = bookmarkSlug prev_bm, bookmarkArchiveHref = bookmarkArchiveHref prev_bm} +upsertBookmarks :: Key User -> [Maybe (Key Bookmark)] -> [Bookmark] -> [[Text]] -> DB [UpsertResult (Key Bookmark)] +upsertBookmarks userId mbids bms tagss = + forM (zip3 mbids bms tagss) $ \(mbid, bm, tags) -> upsertBookmark userId mbid bm tags + updateBookmarkArchiveUrl :: Key User -> Key Bookmark -> Maybe Text -> DB () updateBookmarkArchiveUrl userId bid marchiveUrl = updateWhere [BookmarkUserId CP.==. userId, BookmarkId CP.==. bid] [BookmarkArchiveHref CP.=. marchiveUrl] -upsertNote :: Key User -> Maybe (Key Note) -> Note -> DB (UpsertResult (Key Note)) -upsertNote userId mnid note = +upsertNote :: Key User -> Maybe (Key Note) -> Note -> DB (UpsertResult (Entity Note)) +upsertNote userId mnid note = do case mnid of - Just nid -> do - get nid >>= \case - Just note' -> do - when - (userId /= noteUserId note') - (throwString "unauthorized") - replace nid note - pure (Updated nid) - _ -> throwString "not found" Nothing -> do - Created <$> insert note + now <- liftIO getCurrentTime + let note'' = note {noteUserId = userId, noteLength = T.length (noteText note), noteUpdated = now} + nid <- insert note'' + pure (Created (Entity nid note'')) + Just nid -> + get nid >>= \case + Nothing -> pure (Failed ReasonNotFound) + Just note' | userId /= noteUserId note' -> pure (Failed ReasonUnauthorized) + Just note' | noteUpdated note' > noteUpdated note -> pure (Failed ReasonConflictWithNewer) + Just _ -> do + now <- liftIO getCurrentTime + let note'' = note {noteLength = T.length (noteText note), noteUpdated = now} + replace nid note'' + pure (Updated (Entity nid note'')) + +-- * Archive Job Store + +insertArchiveJobRecords :: [(Key User, Key Bookmark, Text)] -> DB [Key ArchiveJobRecord] +insertArchiveJobRecords records = do + now <- liftIO getCurrentTime + forM records $ \(userId, bid, href) -> insert (ArchiveJobRecord userId bid href now) + +deleteArchiveJobRecord :: Key ArchiveJobRecord -> DB () +deleteArchiveJobRecord jobId = CP.delete jobId + +getArchiveJobRecords :: DB [Entity ArchiveJobRecord] +getArchiveJobRecords = selectList [] [Asc ArchiveJobRecordId]
src/Model/Form.hs view
@@ -235,14 +235,14 @@ ( t ^. BookmarkTagUserId ==. val user - &&. (lower_ (t ^. BookmarkTagTag) `like` lower_ ((%) ++. val query ++. (%))) + &&. sqliteLikeContains (t ^. BookmarkTagTag) query ) unless (null excludedTags) $ where_ $ not_ (lower_ (t ^. BookmarkTagTag) `in_` valList excludedTags) let countRows' = countRows matchPriority = case_ [ when_ (lower_ (t ^. BookmarkTagTag) ==. lower_ (val query)) then_ (val (0 :: Int)), - when_ (lower_ (t ^. BookmarkTagTag) `like` lower_ (val query ++. (%))) then_ (val (1 :: Int)) + when_ (sqliteLikePrefix (t ^. BookmarkTagTag) query) then_ (val (1 :: Int)) ] (else_ (val (2 :: Int))) groupBy (lower_ (t ^. BookmarkTagTag))
src/Model/Migrations.hs view
@@ -82,11 +82,11 @@ -- run on every startup regardless of DbVersion, since migrateSchema may -- recreate tables (dropping their indexes) at any time alwaysAppMigrations :: (MonadUnliftIO m) => [OperationSpec m] -alwaysAppMigrations = [operation_create_initial_indexes] +alwaysAppMigrations = [operation_drop_superseded_indexes, operation_create_initial_indexes] -printAppMigrations :: forall m. DBM m () +printAppMigrations :: DB () printAppMigrations = do - forM_ (alwaysAppMigrations :: [OperationSpec m]) $ \(name, opSpec) -> do + forM_ alwaysAppMigrations $ \(name, opSpec) -> do putStrLn ("*** Dumping always-run migration operation: " <> name) statements <- opSpec traverse_ (\(SqlStatement sql vals) -> putStrLn (sql <> " " <> tshow vals)) statements @@ -181,16 +181,61 @@ getLatestVersion :: AppMigrations m -> DbVersion getLatestVersion = maybe 0 maximum . fromNullable . map (\((_, v2) := _) -> v2) -operation_create_initial_indexes :: (Applicative m) => OperationSpec m +operation_create_initial_indexes :: (MonadIO m) => OperationSpec m operation_create_initial_indexes = - ("ensure-base-indexes",) + ("ensure-base-indexes",) do + needsAnalyze <- bookmarkStatsMissing + pure + $ (flip SqlStatement [] <$> indexStatements) + -- on an already-analyzed database a fresh index has no sqlite_stat1 row, + -- which can make the planner prefer it over the (time, id)-ordered + -- indexes and force a sort step, so analyze once when stats are missing + <> [SqlStatement "ANALYZE bookmark" [] | needsAnalyze] + where + bookmarkStatsMissing = do + statTable <- rawSql "SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'sqlite_stat1'" [] + case statTable :: [Single Int] of + [] -> pure False + _ -> do + found <- rawSql "SELECT COUNT(*) FROM sqlite_stat1 WHERE tbl = 'bookmark' AND idx IN ('idx_bookmark_user_shared', 'idx_bookmark_id_shared')" [] + pure (found /= [Single (2 :: Int)]) + indexStatements = + [ "CREATE INDEX IF NOT EXISTS idx_bookmark_time_id ON bookmark (user_id, time)", + "CREATE INDEX IF NOT EXISTS idx_bookmark_shared_time_id ON bookmark (user_id, shared, time)", + -- narrowest covering index for shared-filtered counts; without it the + -- planner satisfies them from a wider expression index + "CREATE INDEX IF NOT EXISTS idx_bookmark_user_shared ON bookmark (user_id, shared)", + "CREATE INDEX IF NOT EXISTS idx_note_user_shared ON note (user_id, shared)", + -- covers the shared check when joining bookmark_tag to bookmark by id + -- (public tag cloud counts), avoiding row lookups in the main table + "CREATE INDEX IF NOT EXISTS idx_bookmark_id_shared ON bookmark (id, shared)", + "CREATE INDEX IF NOT EXISTS idx_bookmark_tag_bookmark_id ON bookmark_tag (bookmark_id, id, tag, seq)", + "CREATE INDEX IF NOT EXISTS idx_note_created_id ON note (user_id, created)", + "CREATE INDEX IF NOT EXISTS idx_note_shared_created_id ON note (user_id, shared, created)", + -- expression must match Model.bookmarkHrefNoSchemeExpr token-for-token + -- for SQLite to use these indexes when sorting by BookmarkSortUrl + "CREATE INDEX IF NOT EXISTS idx_bookmark_href_no_scheme ON bookmark (user_id, (CASE WHEN instr(href, '://') > 0 THEN substr(href, instr(href, '://') + 3) ELSE href END))", + "CREATE INDEX IF NOT EXISTS idx_bookmark_shared_href_no_scheme ON bookmark (user_id, shared, (CASE WHEN instr(href, '://') > 0 THEN substr(href, instr(href, '://') + 3) ELSE href END))", + -- expression must match the `lower_ (b ^. BookmarkDescription)` used + -- for BookmarkSortTitle in Model.bookmarksTagsQuery + "CREATE INDEX IF NOT EXISTS idx_bookmark_title ON bookmark (user_id, (LOWER(description)))", + "CREATE INDEX IF NOT EXISTS idx_bookmark_shared_title ON bookmark (user_id, shared, (LOWER(description)))", + -- expression must match the `lower_ (b ^. NoteTitle)` used for + -- NoteSortTitle in Model.getNoteList + "CREATE INDEX IF NOT EXISTS idx_note_title ON note (user_id, (LOWER(title)))", + "CREATE INDEX IF NOT EXISTS idx_note_shared_title ON note (user_id, shared, (LOWER(title)))" + ] + +-- superseded by the ASC (sort-field, id)-ordering indexes above +operation_drop_superseded_indexes :: (Applicative m) => OperationSpec m +operation_drop_superseded_indexes = + ("drop-superseded-indexes",) $ pure $ flip SqlStatement [] - <$> [ "CREATE INDEX IF NOT EXISTS idx_bookmark_time ON bookmark (user_id, time DESC)", - "CREATE INDEX IF NOT EXISTS idx_bookmark_shared_time ON bookmark (user_id, shared, time DESC)", - "CREATE INDEX IF NOT EXISTS idx_bookmark_tag_bookmark_id ON bookmark_tag (bookmark_id, id, tag, seq)", - "CREATE INDEX IF NOT EXISTS idx_note_user_created ON note (user_id, created DESC)", - "CREATE INDEX IF NOT EXISTS idx_note_user_shared_created ON note (user_id, shared, created DESC)" + <$> [ "DROP INDEX IF EXISTS idx_bookmark_time", + "DROP INDEX IF EXISTS idx_bookmark_shared_time", + "DROP INDEX IF EXISTS idx_note_user_created", + "DROP INDEX IF EXISTS idx_note_user_shared_created" ] operation_normalize_bookmark_utctime_remove_z :: (Applicative m) => OperationSpec m
+ src/Network/PrivateAddress.hs view
@@ -0,0 +1,63 @@+-- | Guards against SSRF when the server fetches a user-supplied URL on the +-- user's behalf (e.g. title lookups): resolves the host and rejects it if +-- any resolved address falls in a private, loopback, link-local, or other +-- non-public range. +module Network.PrivateAddress + ( isDisallowedFetchHost, + isDisallowedFetchUrl, + ) +where + +import ClassyPrelude +import Data.IP (AddrRange, IP (..), IPv4, IPv6, fromSockAddr, isMatchedTo) +import Network.HTTP.Client qualified as NH +import Network.Socket (AddrInfo (addrAddress), HostName, defaultHints, getAddrInfo) + +isDisallowedFetchHost :: HostName -> IO Bool +isDisallowedFetchHost host = do + addrs <- getAddrInfo (Just defaultHints) (Just host) Nothing `catch` \(_ :: SomeException) -> pure [] + pure $ null addrs || any (maybe True (isPrivateOrReservedIP . fst) . fromSockAddr . addrAddress) addrs + +isDisallowedFetchUrl :: Text -> IO Bool +isDisallowedFetchUrl rawUrl = + ( do + req <- NH.parseRequest (unpack rawUrl) + isDisallowedFetchHost (unpack (decodeUtf8 (NH.host req))) + ) + `catch` \(_ :: SomeException) -> pure True + +isPrivateOrReservedIP :: IP -> Bool +isPrivateOrReservedIP (IPv4 ip) = any (ip `isMatchedTo`) privateIPv4Ranges +isPrivateOrReservedIP (IPv6 ip) = any (ip `isMatchedTo`) privateIPv6Ranges + +privateIPv4Ranges :: [AddrRange IPv4] +privateIPv4Ranges = + [ "0.0.0.0/8", -- "this" network + "10.0.0.0/8", -- private + "100.64.0.0/10", -- carrier-grade NAT + "127.0.0.0/8", -- loopback + "169.254.0.0/16", -- link-local (incl. cloud metadata endpoints) + "172.16.0.0/12", -- private + "192.0.0.0/24", -- IETF protocol assignments + "192.0.2.0/24", -- documentation (TEST-NET-1) + "192.168.0.0/16", -- private + "198.18.0.0/15", -- benchmarking + "198.51.100.0/24", -- documentation (TEST-NET-2) + "203.0.113.0/24", -- documentation (TEST-NET-3) + "224.0.0.0/4", -- multicast + "240.0.0.0/4", -- reserved + "255.255.255.255/32" -- broadcast + ] + +privateIPv6Ranges :: [AddrRange IPv6] +privateIPv6Ranges = + [ "::1/128", -- loopback + "::/128", -- unspecified + "::ffff:0:0/96", -- IPv4-mapped (denylisted wholesale rather than unwrapped) + "64:ff9b::/96", -- NAT64 + "100::/64", -- discard-only + "2001:db8::/32", -- documentation + "fc00::/7", -- unique local (private) + "fe80::/10", -- link-local + "ff00::/8" -- multicast + ]
src/Settings.hs view
@@ -39,6 +39,12 @@ appStaticDir :: String, -- | Configuration settings for accessing the database. appDatabaseConf :: SqliteConf, + -- | Serialize all DB write transactions through a single in-process lock, to + -- avoid SQLite `SQLITE_BUSY`/snapshot conflicts under concurrent writers. + appSqliteAppWriteLock :: Bool, + -- | SQLite @busy_timeout@, in milliseconds: how long a connection retries + -- before returning `SQLITE_BUSY` on lock contention. + appSqliteBusyTimeoutMs :: Int, -- | Base for all generated URLs. If @Nothing@, determined -- from the request headers. appRoot :: Maybe Text, @@ -93,6 +99,10 @@ appArchiveBoxPlugins :: Maybe Text, -- | Which archiver backend to use (or disabled) appArchiveBackend :: ArchiveBackend, + -- | Minimum delay, in milliseconds, between successive calls to the archiver backend. + appArchiveRateLimitMs :: Int, + -- | Maximum number of pending archive jobs held in memory; excess jobs are dropped. + appArchiveQueueCapacity :: Int, -- | Uri to app source code appSourceCodeUri :: Maybe Text, -- | Whether to only allow SSL connections (i.e. disable non-https cookies and redirects) @@ -115,7 +125,11 @@ appLoginRateLimitWindowSeconds :: Int, -- | Maximum allowed request body size, in bytes (e.g. for Settings/import). -- @0@ disables the limit. - appMaximumContentLength :: Int + appMaximumContentLength :: Int, + -- | When true, users cannot change their password. + appDemoMode :: Bool, + -- | Maximum number of bookmarks allowed in a single 'AddBulkR' request. + appAddBulkMaxItems :: Int } instance FromJSON AppSettings where @@ -128,6 +142,8 @@ #endif appStaticDir <- o .: "static-dir" appDatabaseConf <- o .: "database" + appSqliteAppWriteLock <- o .:? "sqlite-app-write-lock" .!= True + appSqliteBusyTimeoutMs <- o .:? "sqlite-busy-timeout-ms" .!= 30000 appRoot <- o .:? "approot" appHost <- fromString <$> o .: "host" appPort <- o .: "port" @@ -163,6 +179,9 @@ appArchiveBoxTag <- (fmap toText <$> o .:? "archivebox-tag") .!= "espial" appArchiveBoxPlugins <- o .:? "archivebox-plugins" + appArchiveRateLimitMs <- o .:? "archive-rate-limit-ms" .!= 2000 + appArchiveQueueCapacity <- o .:? "archive-queue-capacity" .!= 500 + appSourceCodeUri <- o .:? "source-code-uri" appSSLOnly <- fromMaybe False <$> o .:? "ssl-only" @@ -182,6 +201,10 @@ appLoginRateLimitWindowSeconds <- o .:? "login-rate-limit-window-seconds" .!= 60 appMaximumContentLength <- o .:? "maximum-content-length" .!= (2 * 1024 * 1024) + + appDemoMode <- o .:? "demo-mode" .!= False + + appAddBulkMaxItems <- o .:? "add-bulk-max-items" .!= 200 pure AppSettings {..} where
stack.yaml view
@@ -3,3 +3,6 @@ - . extra-deps: - persistent-sqlite-2.13.3.0@sha256:04caa8dba2a310a4dcf06295fbb4be7eed2ca9c2da92076bac3dd1a66b946062,5155 +flags: + espial: + werror: true
static/css/common.css view
@@ -12,7 +12,8 @@ color: light-dark(oklch(42.903% 0.29735 264.073), oklch(76% 0.29735 264.073)); } -a:visited { +a.bmark-link:visited, +a.note-link:visited { color: light-dark(oklch(37.836% 0.17168 302.149), oklch(73% 0.12 283)); } @@ -146,6 +147,10 @@ color: light-dark(#777, #999); } +.pager-invisible { + visibility: hidden; +} + .thm-text-muted { color: light-dark(#aaa, #7a7a7a); } @@ -221,18 +226,15 @@ color: light-dark(#22a, #7da2ff); } -.tag, -a.tag:visited { +.tag { color: light-dark(oklch(54.38% 0.13279 52.009), oklch(64% 0.13229 52.009)); } -.tag-include, -a.tag-include:visited { +.tag-include { color: light-dark(#ddd, #9a9a9a); } -.tag-exclude, -a.tag-exclude:visited { +.tag-exclude { color: light-dark(#faa, #ff9b9b); } @@ -289,9 +291,8 @@ } .nav-active { - /* color: light-dark(rgb(0, 0, 255), #9ec1ff); */ - background: light-dark(#ff8, #645700); font-weight: 700; + color: light-dark(oklch(42.903% 0.29735 264.073), oklch(76% 0.29735 264.073)); } .close-x {
+ static/js/app-LILLUWFD.min.js view
@@ -0,0 +1,76 @@+var I1=Object.create;var Uc=Object.defineProperty,P1=Object.defineProperties,W1=Object.getOwnPropertyDescriptor,eT=Object.getOwnPropertyDescriptors,tT=Object.getOwnPropertyNames,ao=Object.getOwnPropertySymbols,nT=Object.getPrototypeOf,Hc=Object.prototype.hasOwnProperty,Fh=Object.prototype.propertyIsEnumerable;var Jh=e=>{throw TypeError(e)};var Bc=(e,t,n)=>t in e?Uc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,T=(e,t)=>{for(var n in t||(t={}))Hc.call(t,n)&&Bc(e,n,t[n]);if(ao)for(var n of ao(t))Fh.call(t,n)&&Bc(e,n,t[n]);return e},B=(e,t)=>P1(e,eT(t));var ta=(e,t)=>{var n={};for(var a in e)Hc.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&ao)for(var a of ao(e))t.indexOf(a)<0&&Fh.call(e,a)&&(n[a]=e[a]);return n};var Gt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var aT=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of tT(t))!Hc.call(e,i)&&i!==n&&Uc(e,i,{get:()=>t[i],enumerable:!(a=W1(t,i))||a.enumerable});return e};var $=(e,t,n)=>(n=e!=null?I1(nT(e)):{},aT(t||!e||!e.__esModule?Uc(n,"default",{value:e,enumerable:!0}):n,e));var Y=(e,t,n)=>Bc(e,typeof t!="symbol"?t+"":t,n),qc=(e,t,n)=>t.has(e)||Jh("Cannot "+n);var k=(e,t,n)=>(qc(e,t,"read from private field"),n?n.call(e):t.get(e)),_t=(e,t,n)=>t.has(e)?Jh("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),St=(e,t,n,a)=>(qc(e,t,"write to private field"),a?a.call(e,n):t.set(e,n),n),H=(e,t,n)=>(qc(e,t,"access private method"),n);var jc=(e,t,n,a)=>({set _(i){St(e,t,i,n)},get _(){return k(e,t,a)}});var zm=Gt(P=>{"use strict";var lf=Symbol.for("react.transitional.element"),UT=Symbol.for("react.portal"),HT=Symbol.for("react.fragment"),qT=Symbol.for("react.strict_mode"),jT=Symbol.for("react.profiler"),VT=Symbol.for("react.consumer"),GT=Symbol.for("react.context"),YT=Symbol.for("react.forward_ref"),KT=Symbol.for("react.suspense"),XT=Symbol.for("react.memo"),Rm=Symbol.for("react.lazy"),QT=Symbol.for("react.activity"),Em=Symbol.iterator;function $T(e){return e===null||typeof e!="object"?null:(e=Em&&e[Em]||e["@@iterator"],typeof e=="function"?e:null)}var Om={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Cm=Object.assign,_m={};function ll(e,t,n){this.props=e,this.context=t,this.refs=_m,this.updater=n||Om}ll.prototype.isReactComponent={};ll.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};ll.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Dm(){}Dm.prototype=ll.prototype;function rf(e,t,n){this.props=e,this.context=t,this.refs=_m,this.updater=n||Om}var sf=rf.prototype=new Dm;sf.constructor=rf;Cm(sf,ll.prototype);sf.isPureReactComponent=!0;var wm=Array.isArray;function af(){}var _e={H:null,A:null,T:null,S:null},Mm=Object.prototype.hasOwnProperty;function of(e,t,n){var a=n.ref;return{$$typeof:lf,type:e,key:t,ref:a!==void 0?a:null,props:n}}function ZT(e,t){return of(e.type,t,e.props)}function uf(e){return typeof e=="object"&&e!==null&&e.$$typeof===lf}function FT(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var Am=/\/+/g;function nf(e,t){return typeof e=="object"&&e!==null&&e.key!=null?FT(""+e.key):t.toString(36)}function JT(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(af,af):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function il(e,t,n,a,i){var l=typeof e;(l==="undefined"||l==="boolean")&&(e=null);var r=!1;if(e===null)r=!0;else switch(l){case"bigint":case"string":case"number":r=!0;break;case"object":switch(e.$$typeof){case lf:case UT:r=!0;break;case Rm:return r=e._init,il(r(e._payload),t,n,a,i)}}if(r)return i=i(e),r=a===""?"."+nf(e,0):a,wm(i)?(n="",r!=null&&(n=r.replace(Am,"$&/")+"/"),il(i,t,n,"",function(u){return u})):i!=null&&(uf(i)&&(i=ZT(i,n+(i.key==null||e&&e.key===i.key?"":(""+i.key).replace(Am,"$&/")+"/")+r)),t.push(i)),1;r=0;var s=a===""?".":a+":";if(wm(e))for(var o=0;o<e.length;o++)a=e[o],l=s+nf(a,o),r+=il(a,t,n,l,i);else if(o=$T(e),typeof o=="function")for(e=o.call(e),o=0;!(a=e.next()).done;)a=a.value,l=s+nf(a,o++),r+=il(a,t,n,l,i);else if(l==="object"){if(typeof e.then=="function")return il(JT(e),t,n,a,i);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return r}function ho(e,t,n){if(e==null)return e;var a=[],i=0;return il(e,a,"","",function(l){return t.call(n,l,i++)}),a}function IT(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var Nm=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},PT={map:ho,forEach:function(e,t,n){ho(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ho(e,function(){t++}),t},toArray:function(e){return ho(e,function(t){return t})||[]},only:function(e){if(!uf(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};P.Activity=QT;P.Children=PT;P.Component=ll;P.Fragment=HT;P.Profiler=jT;P.PureComponent=rf;P.StrictMode=qT;P.Suspense=KT;P.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=_e;P.__COMPILER_RUNTIME={__proto__:null,c:function(e){return _e.H.useMemoCache(e)}};P.cache=function(e){return function(){return e.apply(null,arguments)}};P.cacheSignal=function(){return null};P.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var a=Cm({},e.props),i=e.key;if(t!=null)for(l in t.key!==void 0&&(i=""+t.key),t)!Mm.call(t,l)||l==="key"||l==="__self"||l==="__source"||l==="ref"&&t.ref===void 0||(a[l]=t[l]);var l=arguments.length-2;if(l===1)a.children=n;else if(1<l){for(var r=Array(l),s=0;s<l;s++)r[s]=arguments[s+2];a.children=r}return of(e.type,i,a)};P.createContext=function(e){return e={$$typeof:GT,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:VT,_context:e},e};P.createElement=function(e,t,n){var a,i={},l=null;if(t!=null)for(a in t.key!==void 0&&(l=""+t.key),t)Mm.call(t,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(i[a]=t[a]);var r=arguments.length-2;if(r===1)i.children=n;else if(1<r){for(var s=Array(r),o=0;o<r;o++)s[o]=arguments[o+2];i.children=s}if(e&&e.defaultProps)for(a in r=e.defaultProps,r)i[a]===void 0&&(i[a]=r[a]);return of(e,l,i)};P.createRef=function(){return{current:null}};P.forwardRef=function(e){return{$$typeof:YT,render:e}};P.isValidElement=uf;P.lazy=function(e){return{$$typeof:Rm,_payload:{_status:-1,_result:e},_init:IT}};P.memo=function(e,t){return{$$typeof:XT,type:e,compare:t===void 0?null:t}};P.startTransition=function(e){var t=_e.T,n={};_e.T=n;try{var a=e(),i=_e.S;i!==null&&i(n,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(af,Nm)}catch(l){Nm(l)}finally{t!==null&&n.types!==null&&(t.types=n.types),_e.T=t}};P.unstable_useCacheRefresh=function(){return _e.H.useCacheRefresh()};P.use=function(e){return _e.H.use(e)};P.useActionState=function(e,t,n){return _e.H.useActionState(e,t,n)};P.useCallback=function(e,t){return _e.H.useCallback(e,t)};P.useContext=function(e){return _e.H.useContext(e)};P.useDebugValue=function(){};P.useDeferredValue=function(e,t){return _e.H.useDeferredValue(e,t)};P.useEffect=function(e,t){return _e.H.useEffect(e,t)};P.useEffectEvent=function(e){return _e.H.useEffectEvent(e)};P.useId=function(){return _e.H.useId()};P.useImperativeHandle=function(e,t,n){return _e.H.useImperativeHandle(e,t,n)};P.useInsertionEffect=function(e,t){return _e.H.useInsertionEffect(e,t)};P.useLayoutEffect=function(e,t){return _e.H.useLayoutEffect(e,t)};P.useMemo=function(e,t){return _e.H.useMemo(e,t)};P.useOptimistic=function(e,t){return _e.H.useOptimistic(e,t)};P.useReducer=function(e,t,n){return _e.H.useReducer(e,t,n)};P.useRef=function(e){return _e.H.useRef(e)};P.useState=function(e){return _e.H.useState(e)};P.useSyncExternalStore=function(e,t,n){return _e.H.useSyncExternalStore(e,t,n)};P.useTransition=function(){return _e.H.useTransition()};P.version="19.2.6"});var ye=Gt(($N,Lm)=>{"use strict";Lm.exports=zm()});var Um=Gt((ZN,Bm)=>{Bm.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}});var Jm=Gt(Fm=>{"use strict";var sl=ye();function ox(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var ux=typeof Object.is=="function"?Object.is:ox,cx=sl.useState,fx=sl.useEffect,dx=sl.useLayoutEffect,px=sl.useDebugValue;function hx(e,t){var n=t(),a=cx({inst:{value:n,getSnapshot:t}}),i=a[0].inst,l=a[1];return dx(function(){i.value=n,i.getSnapshot=t,hf(i)&&l({inst:i})},[e,n,t]),fx(function(){return hf(i)&&l({inst:i}),e(function(){hf(i)&&l({inst:i})})},[e]),px(n),n}function hf(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!ux(e,n)}catch(a){return!0}}function mx(e,t){return t()}var gx=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?mx:hx;Fm.useSyncExternalStore=sl.useSyncExternalStore!==void 0?sl.useSyncExternalStore:gx});var Pm=Gt((QR,Im)=>{"use strict";Im.exports=Jm()});var mg=Gt(Ue=>{"use strict";function vf(e,t){var n=e.length;e.push(t);e:for(;0<n;){var a=n-1>>>1,i=e[a];if(0<ko(i,t))e[a]=t,e[n]=i,n=a;else break e}}function Bn(e){return e.length===0?null:e[0]}function wo(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var a=0,i=e.length,l=i>>>1;a<l;){var r=2*(a+1)-1,s=e[r],o=r+1,u=e[o];if(0>ko(s,n))o<i&&0>ko(u,s)?(e[a]=u,e[o]=n,a=o):(e[a]=s,e[r]=n,a=r);else if(o<i&&0>ko(u,n))e[a]=u,e[o]=n,a=o;else break e}}return t}function ko(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}Ue.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(rg=performance,Ue.unstable_now=function(){return rg.now()}):(gf=Date,sg=gf.now(),Ue.unstable_now=function(){return gf.now()-sg});var rg,gf,sg,ia=[],_a=[],Rx=1,rn=null,xt=3,Sf=!1,_r=!1,Dr=!1,Tf=!1,cg=typeof setTimeout=="function"?setTimeout:null,fg=typeof clearTimeout=="function"?clearTimeout:null,og=typeof setImmediate<"u"?setImmediate:null;function Eo(e){for(var t=Bn(_a);t!==null;){if(t.callback===null)wo(_a);else if(t.startTime<=e)wo(_a),t.sortIndex=t.expirationTime,vf(ia,t);else break;t=Bn(_a)}}function xf(e){if(Dr=!1,Eo(e),!_r)if(Bn(ia)!==null)_r=!0,dl||(dl=!0,fl());else{var t=Bn(_a);t!==null&&kf(xf,t.startTime-e)}}var dl=!1,Mr=-1,dg=5,pg=-1;function hg(){return Tf?!0:!(Ue.unstable_now()-pg<dg)}function yf(){if(Tf=!1,dl){var e=Ue.unstable_now();pg=e;var t=!0;try{e:{_r=!1,Dr&&(Dr=!1,fg(Mr),Mr=-1),Sf=!0;var n=xt;try{t:{for(Eo(e),rn=Bn(ia);rn!==null&&!(rn.expirationTime>e&&hg());){var a=rn.callback;if(typeof a=="function"){rn.callback=null,xt=rn.priorityLevel;var i=a(rn.expirationTime<=e);if(e=Ue.unstable_now(),typeof i=="function"){rn.callback=i,Eo(e),t=!0;break t}rn===Bn(ia)&&wo(ia),Eo(e)}else wo(ia);rn=Bn(ia)}if(rn!==null)t=!0;else{var l=Bn(_a);l!==null&&kf(xf,l.startTime-e),t=!1}}break e}finally{rn=null,xt=n,Sf=!1}t=void 0}}finally{t?fl():dl=!1}}}var fl;typeof og=="function"?fl=function(){og(yf)}:typeof MessageChannel<"u"?(bf=new MessageChannel,ug=bf.port2,bf.port1.onmessage=yf,fl=function(){ug.postMessage(null)}):fl=function(){cg(yf,0)};var bf,ug;function kf(e,t){Mr=cg(function(){e(Ue.unstable_now())},t)}Ue.unstable_IdlePriority=5;Ue.unstable_ImmediatePriority=1;Ue.unstable_LowPriority=4;Ue.unstable_NormalPriority=3;Ue.unstable_Profiling=null;Ue.unstable_UserBlockingPriority=2;Ue.unstable_cancelCallback=function(e){e.callback=null};Ue.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):dg=0<e?Math.floor(1e3/e):5};Ue.unstable_getCurrentPriorityLevel=function(){return xt};Ue.unstable_next=function(e){switch(xt){case 1:case 2:case 3:var t=3;break;default:t=xt}var n=xt;xt=t;try{return e()}finally{xt=n}};Ue.unstable_requestPaint=function(){Tf=!0};Ue.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=xt;xt=e;try{return t()}finally{xt=n}};Ue.unstable_scheduleCallback=function(e,t,n){var a=Ue.unstable_now();switch(typeof n=="object"&&n!==null?(n=n.delay,n=typeof n=="number"&&0<n?a+n:a):n=a,e){case 1:var i=-1;break;case 2:i=250;break;case 5:i=1073741823;break;case 4:i=1e4;break;default:i=5e3}return i=n+i,e={id:Rx++,callback:t,priorityLevel:e,startTime:n,expirationTime:i,sortIndex:-1},n>a?(e.sortIndex=n,vf(_a,e),Bn(ia)===null&&e===Bn(_a)&&(Dr?(fg(Mr),Mr=-1):Dr=!0,kf(xf,n-a))):(e.sortIndex=i,vf(ia,e),_r||Sf||(_r=!0,dl||(dl=!0,fl()))),e};Ue.unstable_shouldYield=hg;Ue.unstable_wrapCallback=function(e){var t=xt;return function(){var n=xt;xt=t;try{return e.apply(this,arguments)}finally{xt=n}}}});var yg=Gt((FO,gg)=>{"use strict";gg.exports=mg()});var vg=Gt(At=>{"use strict";var Ox=ye();function bg(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Da(){}var wt={d:{f:Da,r:function(){throw Error(bg(522))},D:Da,C:Da,L:Da,m:Da,X:Da,S:Da,M:Da},p:0,findDOMNode:null},Cx=Symbol.for("react.portal");function _x(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Cx,key:a==null?null:""+a,children:e,containerInfo:t,implementation:n}}var zr=Ox.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function Ao(e,t){if(e==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}At.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=wt;At.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(bg(299));return _x(e,t,null,n)};At.flushSync=function(e){var t=zr.T,n=wt.p;try{if(zr.T=null,wt.p=2,e)return e()}finally{zr.T=t,wt.p=n,wt.d.f()}};At.preconnect=function(e,t){typeof e=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,wt.d.C(e,t))};At.prefetchDNS=function(e){typeof e=="string"&&wt.d.D(e)};At.preinit=function(e,t){if(typeof e=="string"&&t&&typeof t.as=="string"){var n=t.as,a=Ao(n,t.crossOrigin),i=typeof t.integrity=="string"?t.integrity:void 0,l=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;n==="style"?wt.d.S(e,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:i,fetchPriority:l}):n==="script"&&wt.d.X(e,{crossOrigin:a,integrity:i,fetchPriority:l,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};At.preinitModule=function(e,t){if(typeof e=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var n=Ao(t.as,t.crossOrigin);wt.d.M(e,{crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&wt.d.M(e)};At.preload=function(e,t){if(typeof e=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var n=t.as,a=Ao(n,t.crossOrigin);wt.d.L(e,n,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};At.preloadModule=function(e,t){if(typeof e=="string")if(t){var n=Ao(t.as,t.crossOrigin);wt.d.m(e,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else wt.d.m(e)};At.requestFormReset=function(e){wt.d.r(e)};At.unstable_batchedUpdates=function(e,t){return e(t)};At.useFormState=function(e,t,n){return zr.H.useFormState(e,t,n)};At.useFormStatus=function(){return zr.H.useHostTransitionStatus()};At.version="19.2.6"});var xg=Gt((IO,Tg)=>{"use strict";function Sg(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Sg)}catch(e){console.error(e)}}Sg(),Tg.exports=vg()});var z0=Gt(Iu=>{"use strict";var at=yg(),Zy=ye(),Dx=xg();function A(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Fy(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function Ss(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function Jy(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function Iy(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function kg(e){if(Ss(e)!==e)throw Error(A(188))}function Mx(e){var t=e.alternate;if(!t){if(t=Ss(e),t===null)throw Error(A(188));return t!==e?null:e}for(var n=e,a=t;;){var i=n.return;if(i===null)break;var l=i.alternate;if(l===null){if(a=i.return,a!==null){n=a;continue}break}if(i.child===l.child){for(l=i.child;l;){if(l===n)return kg(i),e;if(l===a)return kg(i),t;l=l.sibling}throw Error(A(188))}if(n.return!==a.return)n=i,a=l;else{for(var r=!1,s=i.child;s;){if(s===n){r=!0,n=i,a=l;break}if(s===a){r=!0,a=i,n=l;break}s=s.sibling}if(!r){for(s=l.child;s;){if(s===n){r=!0,n=l,a=i;break}if(s===a){r=!0,a=l,n=i;break}s=s.sibling}if(!r)throw Error(A(189))}}if(n.alternate!==a)throw Error(A(190))}if(n.tag!==3)throw Error(A(188));return n.stateNode.current===n?e:t}function Py(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=Py(e),t!==null)return t;e=e.sibling}return null}var ze=Object.assign,zx=Symbol.for("react.element"),No=Symbol.for("react.transitional.element"),Gr=Symbol.for("react.portal"),bl=Symbol.for("react.fragment"),Wy=Symbol.for("react.strict_mode"),ad=Symbol.for("react.profiler"),eb=Symbol.for("react.consumer"),da=Symbol.for("react.context"),Pd=Symbol.for("react.forward_ref"),id=Symbol.for("react.suspense"),ld=Symbol.for("react.suspense_list"),Wd=Symbol.for("react.memo"),Ma=Symbol.for("react.lazy"),rd=Symbol.for("react.activity"),Lx=Symbol.for("react.memo_cache_sentinel"),Eg=Symbol.iterator;function Lr(e){return e===null||typeof e!="object"?null:(e=Eg&&e[Eg]||e["@@iterator"],typeof e=="function"?e:null)}var Bx=Symbol.for("react.client.reference");function sd(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===Bx?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case bl:return"Fragment";case ad:return"Profiler";case Wy:return"StrictMode";case id:return"Suspense";case ld:return"SuspenseList";case rd:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case Gr:return"Portal";case da:return e.displayName||"Context";case eb:return(e._context.displayName||"Context")+".Consumer";case Pd:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Wd:return t=e.displayName||null,t!==null?t:sd(e.type)||"Memo";case Ma:t=e._payload,e=e._init;try{return sd(e(t))}catch(n){}}return null}var Yr=Array.isArray,Z=Zy.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,de=Dx.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Ei={pending:!1,data:null,method:null,action:null},od=[],vl=-1;function Vn(e){return{current:e}}function ut(e){0>vl||(e.current=od[vl],od[vl]=null,vl--)}function Ne(e,t){vl++,od[vl]=e.current,e.current=t}var jn=Vn(null),rs=Vn(null),Ka=Vn(null),ru=Vn(null);function su(e,t){switch(Ne(Ka,t),Ne(rs,e),Ne(jn,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?_y(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=_y(t),e=S0(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}ut(jn),Ne(jn,e)}function Ul(){ut(jn),ut(rs),ut(Ka)}function ud(e){e.memoizedState!==null&&Ne(ru,e);var t=jn.current,n=S0(t,e.type);t!==n&&(Ne(rs,e),Ne(jn,n))}function ou(e){rs.current===e&&(ut(jn),ut(rs)),ru.current===e&&(ut(ru),ys._currentValue=Ei)}var Ef,wg;function Si(e){if(Ef===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Ef=t&&t[1]||"",wg=-1<n.stack.indexOf("\n at")?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return"\n"+Ef+e+wg}var wf=!1;function Af(e,t){if(!e||wf)return"";wf=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var f=function(){throw Error()};if(Object.defineProperty(f.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(f,[])}catch(h){var d=h}Reflect.construct(e,[],f)}else{try{f.call()}catch(h){d=h}e.call(f.prototype)}}else{try{throw Error()}catch(h){d=h}(f=e())&&typeof f.catch=="function"&&f.catch(function(){})}}catch(h){if(h&&d&&typeof h.stack=="string")return[h.stack,d.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var i=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");i&&i.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var l=a.DetermineComponentFrameRoot(),r=l[0],s=l[1];if(r&&s){var o=r.split("\n"),u=s.split("\n");for(i=a=0;a<o.length&&!o[a].includes("DetermineComponentFrameRoot");)a++;for(;i<u.length&&!u[i].includes("DetermineComponentFrameRoot");)i++;if(a===o.length||i===u.length)for(a=o.length-1,i=u.length-1;1<=a&&0<=i&&o[a]!==u[i];)i--;for(;1<=a&&0<=i;a--,i--)if(o[a]!==u[i]){if(a!==1||i!==1)do if(a--,i--,0>i||o[a]!==u[i]){var c="\n"+o[a].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}while(1<=a&&0<=i);break}}}finally{wf=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Si(n):""}function Ux(e,t){switch(e.tag){case 26:case 27:case 5:return Si(e.type);case 16:return Si("Lazy");case 13:return e.child!==t&&t!==null?Si("Suspense Fallback"):Si("Suspense");case 19:return Si("SuspenseList");case 0:case 15:return Af(e.type,!1);case 11:return Af(e.type.render,!1);case 1:return Af(e.type,!0);case 31:return Si("Activity");default:return""}}function Ag(e){try{var t="",n=null;do t+=Ux(e,n),n=e,e=e.return;while(e);return t}catch(a){return"\nError generating stack: "+a.message+"\n"+a.stack}}var cd=Object.prototype.hasOwnProperty,ep=at.unstable_scheduleCallback,Nf=at.unstable_cancelCallback,Hx=at.unstable_shouldYield,qx=at.unstable_requestPaint,$t=at.unstable_now,jx=at.unstable_getCurrentPriorityLevel,tb=at.unstable_ImmediatePriority,nb=at.unstable_UserBlockingPriority,uu=at.unstable_NormalPriority,Vx=at.unstable_LowPriority,ab=at.unstable_IdlePriority,Gx=at.log,Yx=at.unstable_setDisableYieldValue,Ts=null,Zt=null;function qa(e){if(typeof Gx=="function"&&Yx(e),Zt&&typeof Zt.setStrictMode=="function")try{Zt.setStrictMode(Ts,e)}catch(t){}}var Ft=Math.clz32?Math.clz32:Qx,Kx=Math.log,Xx=Math.LN2;function Qx(e){return e>>>=0,e===0?32:31-(Kx(e)/Xx|0)|0}var Ro=256,Oo=262144,Co=4194304;function Ti(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Lu(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var i=0,l=e.suspendedLanes,r=e.pingedLanes;e=e.warmLanes;var s=a&134217727;return s!==0?(a=s&~l,a!==0?i=Ti(a):(r&=s,r!==0?i=Ti(r):n||(n=s&~e,n!==0&&(i=Ti(n))))):(s=a&~l,s!==0?i=Ti(s):r!==0?i=Ti(r):n||(n=a&~e,n!==0&&(i=Ti(n)))),i===0?0:t!==0&&t!==i&&(t&l)===0&&(l=i&-i,n=t&-t,l>=n||l===32&&(n&4194048)!==0)?t:i}function xs(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function $x(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ib(){var e=Co;return Co<<=1,(Co&62914560)===0&&(Co=4194304),e}function Rf(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ks(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Zx(e,t,n,a,i,l){var r=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,o=e.expirationTimes,u=e.hiddenUpdates;for(n=r&~n;0<n;){var c=31-Ft(n),f=1<<c;s[c]=0,o[c]=-1;var d=u[c];if(d!==null)for(u[c]=null,c=0;c<d.length;c++){var h=d[c];h!==null&&(h.lane&=-536870913)}n&=~f}a!==0&&lb(e,a,0),l!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=l&~(r&~t))}function lb(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var a=31-Ft(t);e.entangledLanes|=t,e.entanglements[a]=e.entanglements[a]|1073741824|n&261930}function rb(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-Ft(n),i=1<<a;i&t|e[a]&t&&(e[a]|=t),n&=~i}}function sb(e,t){var n=t&-t;return n=(n&42)!==0?1:tp(n),(n&(e.suspendedLanes|t))!==0?0:n}function tp(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function np(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function ob(){var e=de.p;return e!==0?e:(e=window.event,e===void 0?32:_0(e.type))}function Ng(e,t){var n=de.p;try{return de.p=e,t()}finally{de.p=n}}var ai=Math.random().toString(36).slice(2),pt="__reactFiber$"+ai,Ut="__reactProps$"+ai,Zl="__reactContainer$"+ai,fd="__reactEvents$"+ai,Fx="__reactListeners$"+ai,Jx="__reactHandles$"+ai,Rg="__reactResources$"+ai,Es="__reactMarker$"+ai;function ap(e){delete e[pt],delete e[Ut],delete e[fd],delete e[Fx],delete e[Jx]}function Sl(e){var t=e[pt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Zl]||n[pt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=By(e);e!==null;){if(n=e[pt])return n;e=By(e)}return t}e=n,n=e.parentNode}return null}function Fl(e){if(e=e[pt]||e[Zl]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Kr(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(A(33))}function Cl(e){var t=e[Rg];return t||(t=e[Rg]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function ot(e){e[Es]=!0}var ub=new Set,cb={};function zi(e,t){Hl(e,t),Hl(e+"Capture",t)}function Hl(e,t){for(cb[e]=t,e=0;e<t.length;e++)ub.add(t[e])}var Ix=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Og={},Cg={};function Px(e){return cd.call(Cg,e)?!0:cd.call(Og,e)?!1:Ix.test(e)?Cg[e]=!0:(Og[e]=!0,!1)}function Xo(e,t,n){if(Px(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+n)}}function _o(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+n)}}function la(e,t,n,a){if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttributeNS(t,n,""+a)}}function on(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function fb(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Wx(e,t,n){var a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var i=a.get,l=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(r){n=""+r,l.call(this,r)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return n},setValue:function(r){n=""+r},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function dd(e){if(!e._valueTracker){var t=fb(e)?"checked":"value";e._valueTracker=Wx(e,t,""+e[t])}}function db(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=fb(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function cu(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch(t){return e.body}}var ek=/[\n"\\]/g;function fn(e){return e.replace(ek,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function pd(e,t,n,a,i,l,r,s){e.name="",r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"?e.type=r:e.removeAttribute("type"),t!=null?r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+on(t)):e.value!==""+on(t)&&(e.value=""+on(t)):r!=="submit"&&r!=="reset"||e.removeAttribute("value"),t!=null?hd(e,r,on(t)):n!=null?hd(e,r,on(n)):a!=null&&e.removeAttribute("value"),i==null&&l!=null&&(e.defaultChecked=!!l),i!=null&&(e.checked=i&&typeof i!="function"&&typeof i!="symbol"),s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?e.name=""+on(s):e.removeAttribute("name")}function pb(e,t,n,a,i,l,r,s){if(l!=null&&typeof l!="function"&&typeof l!="symbol"&&typeof l!="boolean"&&(e.type=l),t!=null||n!=null){if(!(l!=="submit"&&l!=="reset"||t!=null)){dd(e);return}n=n!=null?""+on(n):"",t=t!=null?""+on(t):n,s||t===e.value||(e.value=t),e.defaultValue=t}a=a!=null?a:i,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=s?e.checked:!!a,e.defaultChecked=!!a,r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"&&(e.name=r),dd(e)}function hd(e,t,n){t==="number"&&cu(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function _l(e,t,n,a){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&a&&(e[n].defaultSelected=!0)}else{for(n=""+on(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,a&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function hb(e,t,n){if(t!=null&&(t=""+on(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n!=null?""+on(n):""}function mb(e,t,n,a){if(t==null){if(a!=null){if(n!=null)throw Error(A(92));if(Yr(a)){if(1<a.length)throw Error(A(93));a=a[0]}n=a}n==null&&(n=""),t=n}n=on(t),e.defaultValue=n,a=e.textContent,a===n&&a!==""&&a!==null&&(e.value=a),dd(e)}function ql(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var tk=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function _g(e,t,n){var a=t.indexOf("--")===0;n==null||typeof n=="boolean"||n===""?a?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":a?e.setProperty(t,n):typeof n!="number"||n===0||tk.has(t)?t==="float"?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function gb(e,t,n){if(t!=null&&typeof t!="object")throw Error(A(62));if(e=e.style,n!=null){for(var a in n)!n.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?e.setProperty(a,""):a==="float"?e.cssFloat="":e[a]="");for(var i in t)a=t[i],t.hasOwnProperty(i)&&n[i]!==a&&_g(e,i,a)}else for(var l in t)t.hasOwnProperty(l)&&_g(e,l,t[l])}function ip(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var nk=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),ak=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Qo(e){return ak.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function pa(){}var md=null;function lp(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Tl=null,Dl=null;function Dg(e){var t=Fl(e);if(t&&(e=t.stateNode)){var n=e[Ut]||null;e:switch(e=t.stateNode,t.type){case"input":if(pd(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+fn(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var i=a[Ut]||null;if(!i)throw Error(A(90));pd(a,i.value,i.defaultValue,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name)}}for(t=0;t<n.length;t++)a=n[t],a.form===e.form&&db(a)}break e;case"textarea":hb(e,n.value,n.defaultValue);break e;case"select":t=n.value,t!=null&&_l(e,!!n.multiple,t,!1)}}}var Of=!1;function yb(e,t,n){if(Of)return e(t,n);Of=!0;try{var a=e(t);return a}finally{if(Of=!1,(Tl!==null||Dl!==null)&&($u(),Tl&&(t=Tl,e=Dl,Dl=Tl=null,Dg(t),e)))for(t=0;t<e.length;t++)Dg(e[t])}}function ss(e,t){var n=e.stateNode;if(n===null)return null;var a=n[Ut]||null;if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(A(231,t,typeof n));return n}var ba=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),gd=!1;if(ba)try{pl={},Object.defineProperty(pl,"passive",{get:function(){gd=!0}}),window.addEventListener("test",pl,pl),window.removeEventListener("test",pl,pl)}catch(e){gd=!1}var pl,ja=null,rp=null,$o=null;function bb(){if($o)return $o;var e,t=rp,n=t.length,a,i="value"in ja?ja.value:ja.textContent,l=i.length;for(e=0;e<n&&t[e]===i[e];e++);var r=n-e;for(a=1;a<=r&&t[n-a]===i[l-a];a++);return $o=i.slice(e,1<a?1-a:void 0)}function Zo(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function Do(){return!0}function Mg(){return!1}function Ht(e){function t(n,a,i,l,r){this._reactName=n,this._targetInst=i,this.type=a,this.nativeEvent=l,this.target=r,this.currentTarget=null;for(var s in e)e.hasOwnProperty(s)&&(n=e[s],this[s]=n?n(l):l[s]);return this.isDefaultPrevented=(l.defaultPrevented!=null?l.defaultPrevented:l.returnValue===!1)?Do:Mg,this.isPropagationStopped=Mg,this}return ze(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=Do)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=Do)},persist:function(){},isPersistent:Do}),t}var Li={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Bu=Ht(Li),ws=ze({},Li,{view:0,detail:0}),ik=Ht(ws),Cf,_f,Br,Uu=ze({},ws,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:sp,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Br&&(Br&&e.type==="mousemove"?(Cf=e.screenX-Br.screenX,_f=e.screenY-Br.screenY):_f=Cf=0,Br=e),Cf)},movementY:function(e){return"movementY"in e?e.movementY:_f}}),zg=Ht(Uu),lk=ze({},Uu,{dataTransfer:0}),rk=Ht(lk),sk=ze({},ws,{relatedTarget:0}),Df=Ht(sk),ok=ze({},Li,{animationName:0,elapsedTime:0,pseudoElement:0}),uk=Ht(ok),ck=ze({},Li,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),fk=Ht(ck),dk=ze({},Li,{data:0}),Lg=Ht(dk),pk={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},hk={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},mk={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function gk(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=mk[e])?!!t[e]:!1}function sp(){return gk}var yk=ze({},ws,{key:function(e){if(e.key){var t=pk[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Zo(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?hk[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:sp,charCode:function(e){return e.type==="keypress"?Zo(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Zo(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),bk=Ht(yk),vk=ze({},Uu,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Bg=Ht(vk),Sk=ze({},ws,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:sp}),Tk=Ht(Sk),xk=ze({},Li,{propertyName:0,elapsedTime:0,pseudoElement:0}),kk=Ht(xk),Ek=ze({},Uu,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),wk=Ht(Ek),Ak=ze({},Li,{newState:0,oldState:0}),Nk=Ht(Ak),Rk=[9,13,27,32],op=ba&&"CompositionEvent"in window,$r=null;ba&&"documentMode"in document&&($r=document.documentMode);var Ok=ba&&"TextEvent"in window&&!$r,vb=ba&&(!op||$r&&8<$r&&11>=$r),Ug=" ",Hg=!1;function Sb(e,t){switch(e){case"keyup":return Rk.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Tb(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var xl=!1;function Ck(e,t){switch(e){case"compositionend":return Tb(t);case"keypress":return t.which!==32?null:(Hg=!0,Ug);case"textInput":return e=t.data,e===Ug&&Hg?null:e;default:return null}}function _k(e,t){if(xl)return e==="compositionend"||!op&&Sb(e,t)?(e=bb(),$o=rp=ja=null,xl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return vb&&t.locale!=="ko"?null:t.data;default:return null}}var Dk={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function qg(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!Dk[e.type]:t==="textarea"}function xb(e,t,n,a){Tl?Dl?Dl.push(a):Dl=[a]:Tl=a,t=Ru(t,"onChange"),0<t.length&&(n=new Bu("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var Zr=null,os=null;function Mk(e){y0(e,0)}function Hu(e){var t=Kr(e);if(db(t))return e}function jg(e,t){if(e==="change")return t}var kb=!1;ba&&(ba?(zo="oninput"in document,zo||(Mf=document.createElement("div"),Mf.setAttribute("oninput","return;"),zo=typeof Mf.oninput=="function"),Mo=zo):Mo=!1,kb=Mo&&(!document.documentMode||9<document.documentMode));var Mo,zo,Mf;function Vg(){Zr&&(Zr.detachEvent("onpropertychange",Eb),os=Zr=null)}function Eb(e){if(e.propertyName==="value"&&Hu(os)){var t=[];xb(t,os,e,lp(e)),yb(Mk,t)}}function zk(e,t,n){e==="focusin"?(Vg(),Zr=t,os=n,Zr.attachEvent("onpropertychange",Eb)):e==="focusout"&&Vg()}function Lk(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Hu(os)}function Bk(e,t){if(e==="click")return Hu(t)}function Uk(e,t){if(e==="input"||e==="change")return Hu(t)}function Hk(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var It=typeof Object.is=="function"?Object.is:Hk;function us(e,t){if(It(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var i=n[a];if(!cd.call(t,i)||!It(e[i],t[i]))return!1}return!0}function Gg(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Yg(e,t){var n=Gg(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Gg(n)}}function wb(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?wb(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ab(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=cu(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch(a){n=!1}if(n)e=t.contentWindow;else break;t=cu(e.document)}return t}function up(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var qk=ba&&"documentMode"in document&&11>=document.documentMode,kl=null,yd=null,Fr=null,bd=!1;function Kg(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;bd||kl==null||kl!==cu(a)||(a=kl,"selectionStart"in a&&up(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Fr&&us(Fr,a)||(Fr=a,a=Ru(yd,"onSelect"),0<a.length&&(t=new Bu("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=kl)))}function vi(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var El={animationend:vi("Animation","AnimationEnd"),animationiteration:vi("Animation","AnimationIteration"),animationstart:vi("Animation","AnimationStart"),transitionrun:vi("Transition","TransitionRun"),transitionstart:vi("Transition","TransitionStart"),transitioncancel:vi("Transition","TransitionCancel"),transitionend:vi("Transition","TransitionEnd")},zf={},Nb={};ba&&(Nb=document.createElement("div").style,"AnimationEvent"in window||(delete El.animationend.animation,delete El.animationiteration.animation,delete El.animationstart.animation),"TransitionEvent"in window||delete El.transitionend.transition);function Bi(e){if(zf[e])return zf[e];if(!El[e])return e;var t=El[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in Nb)return zf[e]=t[n];return e}var Rb=Bi("animationend"),Ob=Bi("animationiteration"),Cb=Bi("animationstart"),jk=Bi("transitionrun"),Vk=Bi("transitionstart"),Gk=Bi("transitioncancel"),_b=Bi("transitionend"),Db=new Map,vd="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");vd.push("scrollEnd");function An(e,t){Db.set(e,t),zi(t,[e])}var fu=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},sn=[],wl=0,cp=0;function qu(){for(var e=wl,t=cp=wl=0;t<e;){var n=sn[t];sn[t++]=null;var a=sn[t];sn[t++]=null;var i=sn[t];sn[t++]=null;var l=sn[t];if(sn[t++]=null,a!==null&&i!==null){var r=a.pending;r===null?i.next=i:(i.next=r.next,r.next=i),a.pending=i}l!==0&&Mb(n,i,l)}}function ju(e,t,n,a){sn[wl++]=e,sn[wl++]=t,sn[wl++]=n,sn[wl++]=a,cp|=a,e.lanes|=a,e=e.alternate,e!==null&&(e.lanes|=a)}function fp(e,t,n,a){return ju(e,t,n,a),du(e)}function Ui(e,t){return ju(e,null,null,t),du(e)}function Mb(e,t,n){e.lanes|=n;var a=e.alternate;a!==null&&(a.lanes|=n);for(var i=!1,l=e.return;l!==null;)l.childLanes|=n,a=l.alternate,a!==null&&(a.childLanes|=n),l.tag===22&&(e=l.stateNode,e===null||e._visibility&1||(i=!0)),e=l,l=l.return;return e.tag===3?(l=e.stateNode,i&&t!==null&&(i=31-Ft(n),e=l.hiddenUpdates,a=e[i],a===null?e[i]=[t]:a.push(t),t.lane=n|536870912),l):null}function du(e){if(50<is)throw is=0,jd=null,Error(A(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Al={};function Yk(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Xt(e,t,n,a){return new Yk(e,t,n,a)}function dp(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ma(e,t){var n=e.alternate;return n===null?(n=Xt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function zb(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Fo(e,t,n,a,i,l){var r=0;if(a=e,typeof e=="function")dp(e)&&(r=1);else if(typeof e=="string")r=QE(e,n,jn.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case rd:return e=Xt(31,n,t,i),e.elementType=rd,e.lanes=l,e;case bl:return wi(n.children,i,l,t);case Wy:r=8,i|=24;break;case ad:return e=Xt(12,n,t,i|2),e.elementType=ad,e.lanes=l,e;case id:return e=Xt(13,n,t,i),e.elementType=id,e.lanes=l,e;case ld:return e=Xt(19,n,t,i),e.elementType=ld,e.lanes=l,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case da:r=10;break e;case eb:r=9;break e;case Pd:r=11;break e;case Wd:r=14;break e;case Ma:r=16,a=null;break e}r=29,n=Error(A(130,e===null?"null":typeof e,"")),a=null}return t=Xt(r,n,t,i),t.elementType=e,t.type=a,t.lanes=l,t}function wi(e,t,n,a){return e=Xt(7,e,a,t),e.lanes=n,e}function Lf(e,t,n){return e=Xt(6,e,null,t),e.lanes=n,e}function Lb(e){var t=Xt(18,null,null,0);return t.stateNode=e,t}function Bf(e,t,n){return t=Xt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var Xg=new WeakMap;function dn(e,t){if(typeof e=="object"&&e!==null){var n=Xg.get(e);return n!==void 0?n:(t={value:e,source:t,stack:Ag(t)},Xg.set(e,t),t)}return{value:e,source:t,stack:Ag(t)}}var Nl=[],Rl=0,pu=null,cs=0,un=[],cn=0,Wa=null,Un=1,Hn="";function ca(e,t){Nl[Rl++]=cs,Nl[Rl++]=pu,pu=e,cs=t}function Bb(e,t,n){un[cn++]=Un,un[cn++]=Hn,un[cn++]=Wa,Wa=e;var a=Un;e=Hn;var i=32-Ft(a)-1;a&=~(1<<i),n+=1;var l=32-Ft(t)+i;if(30<l){var r=i-i%5;l=(a&(1<<r)-1).toString(32),a>>=r,i-=r,Un=1<<32-Ft(t)+i|n<<i|a,Hn=l+e}else Un=1<<l|n<<i|a,Hn=e}function pp(e){e.return!==null&&(ca(e,1),Bb(e,1,0))}function hp(e){for(;e===pu;)pu=Nl[--Rl],Nl[Rl]=null,cs=Nl[--Rl],Nl[Rl]=null;for(;e===Wa;)Wa=un[--cn],un[cn]=null,Hn=un[--cn],un[cn]=null,Un=un[--cn],un[cn]=null}function Ub(e,t){un[cn++]=Un,un[cn++]=Hn,un[cn++]=Wa,Un=t.id,Hn=t.overflow,Wa=e}var ht=null,Me=null,se=!1,Xa=null,pn=!1,Sd=Error(A(519));function ei(e){var t=Error(A(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw fs(dn(t,e)),Sd}function Qg(e){var t=e.stateNode,n=e.type,a=e.memoizedProps;switch(t[pt]=e,t[Ut]=a,n){case"dialog":ae("cancel",t),ae("close",t);break;case"iframe":case"object":case"embed":ae("load",t);break;case"video":case"audio":for(n=0;n<ms.length;n++)ae(ms[n],t);break;case"source":ae("error",t);break;case"img":case"image":case"link":ae("error",t),ae("load",t);break;case"details":ae("toggle",t);break;case"input":ae("invalid",t),pb(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0);break;case"select":ae("invalid",t);break;case"textarea":ae("invalid",t),mb(t,a.value,a.defaultValue,a.children)}n=a.children,typeof n!="string"&&typeof n!="number"&&typeof n!="bigint"||t.textContent===""+n||a.suppressHydrationWarning===!0||v0(t.textContent,n)?(a.popover!=null&&(ae("beforetoggle",t),ae("toggle",t)),a.onScroll!=null&&ae("scroll",t),a.onScrollEnd!=null&&ae("scrollend",t),a.onClick!=null&&(t.onclick=pa),t=!0):t=!1,t||ei(e,!0)}function $g(e){for(ht=e.return;ht;)switch(ht.tag){case 5:case 31:case 13:pn=!1;return;case 27:case 3:pn=!0;return;default:ht=ht.return}}function hl(e){if(e!==ht)return!1;if(!se)return $g(e),se=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!=="form"&&n!=="button")||Xd(e.type,e.memoizedProps)),n=!n),n&&Me&&ei(e),$g(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(A(317));Me=Ly(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(A(317));Me=Ly(e)}else t===27?(t=Me,ii(e.type)?(e=Fd,Fd=null,Me=e):Me=t):Me=ht?mn(e.stateNode.nextSibling):null;return!0}function Oi(){Me=ht=null,se=!1}function Uf(){var e=Xa;return e!==null&&(Lt===null?Lt=e:Lt.push.apply(Lt,e),Xa=null),e}function fs(e){Xa===null?Xa=[e]:Xa.push(e)}var Td=Vn(null),Hi=null,ha=null;function La(e,t,n){Ne(Td,t._currentValue),t._currentValue=n}function ga(e){e._currentValue=Td.current,ut(Td)}function xd(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function kd(e,t,n,a){var i=e.child;for(i!==null&&(i.return=e);i!==null;){var l=i.dependencies;if(l!==null){var r=i.child;l=l.firstContext;e:for(;l!==null;){var s=l;l=i;for(var o=0;o<t.length;o++)if(s.context===t[o]){l.lanes|=n,s=l.alternate,s!==null&&(s.lanes|=n),xd(l.return,n,e),a||(r=null);break e}l=s.next}}else if(i.tag===18){if(r=i.return,r===null)throw Error(A(341));r.lanes|=n,l=r.alternate,l!==null&&(l.lanes|=n),xd(r,n,e),r=null}else r=i.child;if(r!==null)r.return=i;else for(r=i;r!==null;){if(r===e){r=null;break}if(i=r.sibling,i!==null){i.return=r.return,r=i;break}r=r.return}i=r}}function Jl(e,t,n,a){e=null;for(var i=t,l=!1;i!==null;){if(!l){if((i.flags&524288)!==0)l=!0;else if((i.flags&262144)!==0)break}if(i.tag===10){var r=i.alternate;if(r===null)throw Error(A(387));if(r=r.memoizedProps,r!==null){var s=i.type;It(i.pendingProps.value,r.value)||(e!==null?e.push(s):e=[s])}}else if(i===ru.current){if(r=i.alternate,r===null)throw Error(A(387));r.memoizedState.memoizedState!==i.memoizedState.memoizedState&&(e!==null?e.push(ys):e=[ys])}i=i.return}e!==null&&kd(t,e,n,a),t.flags|=262144}function hu(e){for(e=e.firstContext;e!==null;){if(!It(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Ci(e){Hi=e,ha=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function mt(e){return Hb(Hi,e)}function Lo(e,t){return Hi===null&&Ci(e),Hb(e,t)}function Hb(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},ha===null){if(e===null)throw Error(A(308));ha=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else ha=ha.next=t;return n}var Kk=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(n,a){e.push(a)}};this.abort=function(){t.aborted=!0,e.forEach(function(n){return n()})}},Xk=at.unstable_scheduleCallback,Qk=at.unstable_NormalPriority,Ie={$$typeof:da,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function mp(){return{controller:new Kk,data:new Map,refCount:0}}function As(e){e.refCount--,e.refCount===0&&Xk(Qk,function(){e.controller.abort()})}var Jr=null,Ed=0,jl=0,Ml=null;function $k(e,t){if(Jr===null){var n=Jr=[];Ed=0,jl=jp(),Ml={status:"pending",value:void 0,then:function(a){n.push(a)}}}return Ed++,t.then(Zg,Zg),t}function Zg(){if(--Ed===0&&Jr!==null){Ml!==null&&(Ml.status="fulfilled");var e=Jr;Jr=null,jl=0,Ml=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function Zk(e,t){var n=[],a={status:"pending",value:null,reason:null,then:function(i){n.push(i)}};return e.then(function(){a.status="fulfilled",a.value=t;for(var i=0;i<n.length;i++)(0,n[i])(t)},function(i){for(a.status="rejected",a.reason=i,i=0;i<n.length;i++)(0,n[i])(void 0)}),a}var Fg=Z.S;Z.S=function(e,t){Pv=$t(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&$k(e,t),Fg!==null&&Fg(e,t)};var Ai=Vn(null);function gp(){var e=Ai.current;return e!==null?e:Ee.pooledCache}function Jo(e,t){t===null?Ne(Ai,Ai.current):Ne(Ai,t.pool)}function qb(){var e=gp();return e===null?null:{parent:Ie._currentValue,pool:e}}var Il=Error(A(460)),yp=Error(A(474)),Vu=Error(A(542)),mu={then:function(){}};function Jg(e){return e=e.status,e==="fulfilled"||e==="rejected"}function jb(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(pa,pa),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,Pg(e),e;default:if(typeof t.status=="string")t.then(pa,pa);else{if(e=Ee,e!==null&&100<e.shellSuspendCounter)throw Error(A(482));e=t,e.status="pending",e.then(function(a){if(t.status==="pending"){var i=t;i.status="fulfilled",i.value=a}},function(a){if(t.status==="pending"){var i=t;i.status="rejected",i.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,Pg(e),e}throw Ni=t,Il}}function xi(e){try{var t=e._init;return t(e._payload)}catch(n){throw n!==null&&typeof n=="object"&&typeof n.then=="function"?(Ni=n,Il):n}}var Ni=null;function Ig(){if(Ni===null)throw Error(A(459));var e=Ni;return Ni=null,e}function Pg(e){if(e===Il||e===Vu)throw Error(A(483))}var zl=null,ds=0;function Bo(e){var t=ds;return ds+=1,zl===null&&(zl=[]),jb(zl,e,t)}function Ur(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function Uo(e,t){throw t.$$typeof===zx?Error(A(525)):(e=Object.prototype.toString.call(t),Error(A(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function Vb(e){function t(m,p){if(e){var y=m.deletions;y===null?(m.deletions=[p],m.flags|=16):y.push(p)}}function n(m,p){if(!e)return null;for(;p!==null;)t(m,p),p=p.sibling;return null}function a(m){for(var p=new Map;m!==null;)m.key!==null?p.set(m.key,m):p.set(m.index,m),m=m.sibling;return p}function i(m,p){return m=ma(m,p),m.index=0,m.sibling=null,m}function l(m,p,y){return m.index=y,e?(y=m.alternate,y!==null?(y=y.index,y<p?(m.flags|=67108866,p):y):(m.flags|=67108866,p)):(m.flags|=1048576,p)}function r(m){return e&&m.alternate===null&&(m.flags|=67108866),m}function s(m,p,y,S){return p===null||p.tag!==6?(p=Lf(y,m.mode,S),p.return=m,p):(p=i(p,y),p.return=m,p)}function o(m,p,y,S){var x=y.type;return x===bl?c(m,p,y.props.children,S,y.key):p!==null&&(p.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===Ma&&xi(x)===p.type)?(p=i(p,y.props),Ur(p,y),p.return=m,p):(p=Fo(y.type,y.key,y.props,null,m.mode,S),Ur(p,y),p.return=m,p)}function u(m,p,y,S){return p===null||p.tag!==4||p.stateNode.containerInfo!==y.containerInfo||p.stateNode.implementation!==y.implementation?(p=Bf(y,m.mode,S),p.return=m,p):(p=i(p,y.children||[]),p.return=m,p)}function c(m,p,y,S,x){return p===null||p.tag!==7?(p=wi(y,m.mode,S,x),p.return=m,p):(p=i(p,y),p.return=m,p)}function f(m,p,y){if(typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint")return p=Lf(""+p,m.mode,y),p.return=m,p;if(typeof p=="object"&&p!==null){switch(p.$$typeof){case No:return y=Fo(p.type,p.key,p.props,null,m.mode,y),Ur(y,p),y.return=m,y;case Gr:return p=Bf(p,m.mode,y),p.return=m,p;case Ma:return p=xi(p),f(m,p,y)}if(Yr(p)||Lr(p))return p=wi(p,m.mode,y,null),p.return=m,p;if(typeof p.then=="function")return f(m,Bo(p),y);if(p.$$typeof===da)return f(m,Lo(m,p),y);Uo(m,p)}return null}function d(m,p,y,S){var x=p!==null?p.key:null;if(typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint")return x!==null?null:s(m,p,""+y,S);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case No:return y.key===x?o(m,p,y,S):null;case Gr:return y.key===x?u(m,p,y,S):null;case Ma:return y=xi(y),d(m,p,y,S)}if(Yr(y)||Lr(y))return x!==null?null:c(m,p,y,S,null);if(typeof y.then=="function")return d(m,p,Bo(y),S);if(y.$$typeof===da)return d(m,p,Lo(m,y),S);Uo(m,y)}return null}function h(m,p,y,S,x){if(typeof S=="string"&&S!==""||typeof S=="number"||typeof S=="bigint")return m=m.get(y)||null,s(p,m,""+S,x);if(typeof S=="object"&&S!==null){switch(S.$$typeof){case No:return m=m.get(S.key===null?y:S.key)||null,o(p,m,S,x);case Gr:return m=m.get(S.key===null?y:S.key)||null,u(p,m,S,x);case Ma:return S=xi(S),h(m,p,y,S,x)}if(Yr(S)||Lr(S))return m=m.get(y)||null,c(p,m,S,x,null);if(typeof S.then=="function")return h(m,p,y,Bo(S),x);if(S.$$typeof===da)return h(m,p,y,Lo(p,S),x);Uo(p,S)}return null}function b(m,p,y,S){for(var x=null,R=null,N=p,z=p=0,D=null;N!==null&&z<y.length;z++){N.index>z?(D=N,N=null):D=N.sibling;var L=d(m,N,y[z],S);if(L===null){N===null&&(N=D);break}e&&N&&L.alternate===null&&t(m,N),p=l(L,p,z),R===null?x=L:R.sibling=L,R=L,N=D}if(z===y.length)return n(m,N),se&&ca(m,z),x;if(N===null){for(;z<y.length;z++)N=f(m,y[z],S),N!==null&&(p=l(N,p,z),R===null?x=N:R.sibling=N,R=N);return se&&ca(m,z),x}for(N=a(N);z<y.length;z++)D=h(N,m,z,y[z],S),D!==null&&(e&&D.alternate!==null&&N.delete(D.key===null?z:D.key),p=l(D,p,z),R===null?x=D:R.sibling=D,R=D);return e&&N.forEach(function(oe){return t(m,oe)}),se&&ca(m,z),x}function v(m,p,y,S){if(y==null)throw Error(A(151));for(var x=null,R=null,N=p,z=p=0,D=null,L=y.next();N!==null&&!L.done;z++,L=y.next()){N.index>z?(D=N,N=null):D=N.sibling;var oe=d(m,N,L.value,S);if(oe===null){N===null&&(N=D);break}e&&N&&oe.alternate===null&&t(m,N),p=l(oe,p,z),R===null?x=oe:R.sibling=oe,R=oe,N=D}if(L.done)return n(m,N),se&&ca(m,z),x;if(N===null){for(;!L.done;z++,L=y.next())L=f(m,L.value,S),L!==null&&(p=l(L,p,z),R===null?x=L:R.sibling=L,R=L);return se&&ca(m,z),x}for(N=a(N);!L.done;z++,L=y.next())L=h(N,m,z,L.value,S),L!==null&&(e&&L.alternate!==null&&N.delete(L.key===null?z:L.key),p=l(L,p,z),R===null?x=L:R.sibling=L,R=L);return e&&N.forEach(function(K){return t(m,K)}),se&&ca(m,z),x}function E(m,p,y,S){if(typeof y=="object"&&y!==null&&y.type===bl&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case No:e:{for(var x=y.key;p!==null;){if(p.key===x){if(x=y.type,x===bl){if(p.tag===7){n(m,p.sibling),S=i(p,y.props.children),S.return=m,m=S;break e}}else if(p.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===Ma&&xi(x)===p.type){n(m,p.sibling),S=i(p,y.props),Ur(S,y),S.return=m,m=S;break e}n(m,p);break}else t(m,p);p=p.sibling}y.type===bl?(S=wi(y.props.children,m.mode,S,y.key),S.return=m,m=S):(S=Fo(y.type,y.key,y.props,null,m.mode,S),Ur(S,y),S.return=m,m=S)}return r(m);case Gr:e:{for(x=y.key;p!==null;){if(p.key===x)if(p.tag===4&&p.stateNode.containerInfo===y.containerInfo&&p.stateNode.implementation===y.implementation){n(m,p.sibling),S=i(p,y.children||[]),S.return=m,m=S;break e}else{n(m,p);break}else t(m,p);p=p.sibling}S=Bf(y,m.mode,S),S.return=m,m=S}return r(m);case Ma:return y=xi(y),E(m,p,y,S)}if(Yr(y))return b(m,p,y,S);if(Lr(y)){if(x=Lr(y),typeof x!="function")throw Error(A(150));return y=x.call(y),v(m,p,y,S)}if(typeof y.then=="function")return E(m,p,Bo(y),S);if(y.$$typeof===da)return E(m,p,Lo(m,y),S);Uo(m,y)}return typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint"?(y=""+y,p!==null&&p.tag===6?(n(m,p.sibling),S=i(p,y),S.return=m,m=S):(n(m,p),S=Lf(y,m.mode,S),S.return=m,m=S),r(m)):n(m,p)}return function(m,p,y,S){try{ds=0;var x=E(m,p,y,S);return zl=null,x}catch(N){if(N===Il||N===Vu)throw N;var R=Xt(29,N,null,m.mode);return R.lanes=S,R.return=m,R}}}var _i=Vb(!0),Gb=Vb(!1),za=!1;function bp(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function wd(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Qa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function $a(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(fe&2)!==0){var i=a.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),a.pending=t,t=du(e),Mb(e,null,n),t}return ju(e,a,t,n),du(e)}function Ir(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,rb(e,n)}}function Hf(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var i=null,l=null;if(n=n.firstBaseUpdate,n!==null){do{var r={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};l===null?i=l=r:l=l.next=r,n=n.next}while(n!==null);l===null?i=l=t:l=l.next=t}else i=l=t;n={baseState:a.baseState,firstBaseUpdate:i,lastBaseUpdate:l,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ad=!1;function Pr(){if(Ad){var e=Ml;if(e!==null)throw e}}function Wr(e,t,n,a){Ad=!1;var i=e.updateQueue;za=!1;var l=i.firstBaseUpdate,r=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var o=s,u=o.next;o.next=null,r===null?l=u:r.next=u,r=o;var c=e.alternate;c!==null&&(c=c.updateQueue,s=c.lastBaseUpdate,s!==r&&(s===null?c.firstBaseUpdate=u:s.next=u,c.lastBaseUpdate=o))}if(l!==null){var f=i.baseState;r=0,c=u=o=null,s=l;do{var d=s.lane&-536870913,h=d!==s.lane;if(h?(re&d)===d:(a&d)===d){d!==0&&d===jl&&(Ad=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var b=e,v=s;d=t;var E=n;switch(v.tag){case 1:if(b=v.payload,typeof b=="function"){f=b.call(E,f,d);break e}f=b;break e;case 3:b.flags=b.flags&-65537|128;case 0:if(b=v.payload,d=typeof b=="function"?b.call(E,f,d):b,d==null)break e;f=ze({},f,d);break e;case 2:za=!0}}d=s.callback,d!==null&&(e.flags|=64,h&&(e.flags|=8192),h=i.callbacks,h===null?i.callbacks=[d]:h.push(d))}else h={lane:d,tag:s.tag,payload:s.payload,callback:s.callback,next:null},c===null?(u=c=h,o=f):c=c.next=h,r|=d;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;h=s,s=h.next,h.next=null,i.lastBaseUpdate=h,i.shared.pending=null}}while(!0);c===null&&(o=f),i.baseState=o,i.firstBaseUpdate=u,i.lastBaseUpdate=c,l===null&&(i.shared.lanes=0),ni|=r,e.lanes=r,e.memoizedState=f}}function Yb(e,t){if(typeof e!="function")throw Error(A(191,e));e.call(t)}function Kb(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)Yb(n[e],t)}var Vl=Vn(null),gu=Vn(0);function Wg(e,t){e=xa,Ne(gu,e),Ne(Vl,t),xa=e|t.baseLanes}function Nd(){Ne(gu,xa),Ne(Vl,Vl.current)}function vp(){xa=gu.current,ut(Vl),ut(gu)}var Pt=Vn(null),hn=null;function Ba(e){var t=e.alternate;Ne(Qe,Qe.current&1),Ne(Pt,e),hn===null&&(t===null||Vl.current!==null||t.memoizedState!==null)&&(hn=e)}function Rd(e){Ne(Qe,Qe.current),Ne(Pt,e),hn===null&&(hn=e)}function Xb(e){e.tag===22?(Ne(Qe,Qe.current),Ne(Pt,e),hn===null&&(hn=e)):Ua(e)}function Ua(){Ne(Qe,Qe.current),Ne(Pt,Pt.current)}function Kt(e){ut(Pt),hn===e&&(hn=null),ut(Qe)}var Qe=Vn(0);function yu(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||$d(n)||Zd(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var va=0,W=null,ke=null,Fe=null,bu=!1,Ll=!1,Di=!1,vu=0,ps=0,Bl=null,Fk=0;function qe(){throw Error(A(321))}function Sp(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!It(e[n],t[n]))return!1;return!0}function Tp(e,t,n,a,i,l){return va=l,W=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Z.H=e===null||e.memoizedState===null?xv:Dp,Di=!1,l=n(a,i),Di=!1,Ll&&(l=$b(t,n,a,i)),Qb(e),l}function Qb(e){Z.H=hs;var t=ke!==null&&ke.next!==null;if(va=0,Fe=ke=W=null,bu=!1,ps=0,Bl=null,t)throw Error(A(300));e===null||Pe||(e=e.dependencies,e!==null&&hu(e)&&(Pe=!0))}function $b(e,t,n,a){W=e;var i=0;do{if(Ll&&(Bl=null),ps=0,Ll=!1,25<=i)throw Error(A(301));if(i+=1,Fe=ke=null,e.updateQueue!=null){var l=e.updateQueue;l.lastEffect=null,l.events=null,l.stores=null,l.memoCache!=null&&(l.memoCache.index=0)}Z.H=kv,l=t(n,a)}while(Ll);return l}function Jk(){var e=Z.H,t=e.useState()[0];return t=typeof t.then=="function"?Ns(t):t,e=e.useState()[0],(ke!==null?ke.memoizedState:null)!==e&&(W.flags|=1024),t}function xp(){var e=vu!==0;return vu=0,e}function kp(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Ep(e){if(bu){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}bu=!1}va=0,Fe=ke=W=null,Ll=!1,ps=vu=0,Bl=null}function Nt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Fe===null?W.memoizedState=Fe=e:Fe=Fe.next=e,Fe}function $e(){if(ke===null){var e=W.alternate;e=e!==null?e.memoizedState:null}else e=ke.next;var t=Fe===null?W.memoizedState:Fe.next;if(t!==null)Fe=t,ke=e;else{if(e===null)throw W.alternate===null?Error(A(467)):Error(A(310));ke=e,e={memoizedState:ke.memoizedState,baseState:ke.baseState,baseQueue:ke.baseQueue,queue:ke.queue,next:null},Fe===null?W.memoizedState=Fe=e:Fe=Fe.next=e}return Fe}function Gu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Ns(e){var t=ps;return ps+=1,Bl===null&&(Bl=[]),e=jb(Bl,e,t),t=W,(Fe===null?t.memoizedState:Fe.next)===null&&(t=t.alternate,Z.H=t===null||t.memoizedState===null?xv:Dp),e}function Yu(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Ns(e);if(e.$$typeof===da)return mt(e)}throw Error(A(438,String(e)))}function wp(e){var t=null,n=W.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var a=W.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(i){return i.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),n===null&&(n=Gu(),W.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),a=0;a<e;a++)n[a]=Lx;return t.index++,n}function Sa(e,t){return typeof t=="function"?t(e):t}function Io(e){var t=$e();return Ap(t,ke,e)}function Ap(e,t,n){var a=e.queue;if(a===null)throw Error(A(311));a.lastRenderedReducer=n;var i=e.baseQueue,l=a.pending;if(l!==null){if(i!==null){var r=i.next;i.next=l.next,l.next=r}t.baseQueue=i=l,a.pending=null}if(l=e.baseState,i===null)e.memoizedState=l;else{t=i.next;var s=r=null,o=null,u=t,c=!1;do{var f=u.lane&-536870913;if(f!==u.lane?(re&f)===f:(va&f)===f){var d=u.revertLane;if(d===0)o!==null&&(o=o.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===jl&&(c=!0);else if((va&d)===d){u=u.next,d===jl&&(c=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},o===null?(s=o=f,r=l):o=o.next=f,W.lanes|=d,ni|=d;f=u.action,Di&&n(l,f),l=u.hasEagerState?u.eagerState:n(l,f)}else d={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},o===null?(s=o=d,r=l):o=o.next=d,W.lanes|=f,ni|=f;u=u.next}while(u!==null&&u!==t);if(o===null?r=l:o.next=s,!It(l,e.memoizedState)&&(Pe=!0,c&&(n=Ml,n!==null)))throw n;e.memoizedState=l,e.baseState=r,e.baseQueue=o,a.lastRenderedState=l}return i===null&&(a.lanes=0),[e.memoizedState,a.dispatch]}function qf(e){var t=$e(),n=t.queue;if(n===null)throw Error(A(311));n.lastRenderedReducer=e;var a=n.dispatch,i=n.pending,l=t.memoizedState;if(i!==null){n.pending=null;var r=i=i.next;do l=e(l,r.action),r=r.next;while(r!==i);It(l,t.memoizedState)||(Pe=!0),t.memoizedState=l,t.baseQueue===null&&(t.baseState=l),n.lastRenderedState=l}return[l,a]}function Zb(e,t,n){var a=W,i=$e(),l=se;if(l){if(n===void 0)throw Error(A(407));n=n()}else n=t();var r=!It((ke||i).memoizedState,n);if(r&&(i.memoizedState=n,Pe=!0),i=i.queue,Np(Ib.bind(null,a,i,e),[e]),i.getSnapshot!==t||r||Fe!==null&&Fe.memoizedState.tag&1){if(a.flags|=2048,Gl(9,{destroy:void 0},Jb.bind(null,a,i,n,t),null),Ee===null)throw Error(A(349));l||(va&127)!==0||Fb(a,t,n)}return n}function Fb(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=W.updateQueue,t===null?(t=Gu(),W.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Jb(e,t,n,a){t.value=n,t.getSnapshot=a,Pb(t)&&Wb(e)}function Ib(e,t,n){return n(function(){Pb(t)&&Wb(e)})}function Pb(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!It(e,n)}catch(a){return!0}}function Wb(e){var t=Ui(e,2);t!==null&&Bt(t,e,2)}function Od(e){var t=Nt();if(typeof e=="function"){var n=e;if(e=n(),Di){qa(!0);try{n()}finally{qa(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Sa,lastRenderedState:e},t}function ev(e,t,n,a){return e.baseState=n,Ap(e,ke,typeof a=="function"?a:Sa)}function Ik(e,t,n,a,i){if(Xu(e))throw Error(A(485));if(e=t.action,e!==null){var l={payload:i,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(r){l.listeners.push(r)}};Z.T!==null?n(!0):l.isTransition=!1,a(l),n=t.pending,n===null?(l.next=t.pending=l,tv(t,l)):(l.next=n.next,t.pending=n.next=l)}}function tv(e,t){var n=t.action,a=t.payload,i=e.state;if(t.isTransition){var l=Z.T,r={};Z.T=r;try{var s=n(i,a),o=Z.S;o!==null&&o(r,s),ey(e,t,s)}catch(u){Cd(e,t,u)}finally{l!==null&&r.types!==null&&(l.types=r.types),Z.T=l}}else try{l=n(i,a),ey(e,t,l)}catch(u){Cd(e,t,u)}}function ey(e,t,n){n!==null&&typeof n=="object"&&typeof n.then=="function"?n.then(function(a){ty(e,t,a)},function(a){return Cd(e,t,a)}):ty(e,t,n)}function ty(e,t,n){t.status="fulfilled",t.value=n,nv(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,tv(e,n)))}function Cd(e,t,n){var a=e.pending;if(e.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=n,nv(t),t=t.next;while(t!==a)}e.action=null}function nv(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function av(e,t){return t}function ny(e,t){if(se){var n=Ee.formState;if(n!==null){e:{var a=W;if(se){if(Me){t:{for(var i=Me,l=pn;i.nodeType!==8;){if(!l){i=null;break t}if(i=mn(i.nextSibling),i===null){i=null;break t}}l=i.data,i=l==="F!"||l==="F"?i:null}if(i){Me=mn(i.nextSibling),a=i.data==="F!";break e}}ei(a)}a=!1}a&&(t=n[0])}}return n=Nt(),n.memoizedState=n.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:av,lastRenderedState:t},n.queue=a,n=vv.bind(null,W,a),a.dispatch=n,a=Od(!1),l=_p.bind(null,W,!1,a.queue),a=Nt(),i={state:t,dispatch:null,action:e,pending:null},a.queue=i,n=Ik.bind(null,W,i,l,n),i.dispatch=n,a.memoizedState=e,[t,n,!1]}function ay(e){var t=$e();return iv(t,ke,e)}function iv(e,t,n){if(t=Ap(e,t,av)[0],e=Io(Sa)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var a=Ns(t)}catch(r){throw r===Il?Vu:r}else a=t;t=$e();var i=t.queue,l=i.dispatch;return n!==t.memoizedState&&(W.flags|=2048,Gl(9,{destroy:void 0},Pk.bind(null,i,n),null)),[a,l,e]}function Pk(e,t){e.action=t}function iy(e){var t=$e(),n=ke;if(n!==null)return iv(t,n,e);$e(),t=t.memoizedState,n=$e();var a=n.queue.dispatch;return n.memoizedState=e,[t,a,!1]}function Gl(e,t,n,a){return e={tag:e,create:n,deps:a,inst:t,next:null},t=W.updateQueue,t===null&&(t=Gu(),W.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function lv(){return $e().memoizedState}function Po(e,t,n,a){var i=Nt();W.flags|=e,i.memoizedState=Gl(1|t,{destroy:void 0},n,a===void 0?null:a)}function Ku(e,t,n,a){var i=$e();a=a===void 0?null:a;var l=i.memoizedState.inst;ke!==null&&a!==null&&Sp(a,ke.memoizedState.deps)?i.memoizedState=Gl(t,l,n,a):(W.flags|=e,i.memoizedState=Gl(1|t,l,n,a))}function ly(e,t){Po(8390656,8,e,t)}function Np(e,t){Ku(2048,8,e,t)}function Wk(e){W.flags|=4;var t=W.updateQueue;if(t===null)t=Gu(),W.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function rv(e){var t=$e().memoizedState;return Wk({ref:t,nextImpl:e}),function(){if((fe&2)!==0)throw Error(A(440));return t.impl.apply(void 0,arguments)}}function sv(e,t){return Ku(4,2,e,t)}function ov(e,t){return Ku(4,4,e,t)}function uv(e,t){if(typeof t=="function"){e=e();var n=t(e);return function(){typeof n=="function"?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function cv(e,t,n){n=n!=null?n.concat([e]):null,Ku(4,4,uv.bind(null,t,e),n)}function Rp(){}function fv(e,t){var n=$e();t=t===void 0?null:t;var a=n.memoizedState;return t!==null&&Sp(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function dv(e,t){var n=$e();t=t===void 0?null:t;var a=n.memoizedState;if(t!==null&&Sp(t,a[1]))return a[0];if(a=e(),Di){qa(!0);try{e()}finally{qa(!1)}}return n.memoizedState=[a,t],a}function Op(e,t,n){return n===void 0||(va&1073741824)!==0&&(re&261930)===0?e.memoizedState=t:(e.memoizedState=n,e=e0(),W.lanes|=e,ni|=e,n)}function pv(e,t,n,a){return It(n,t)?n:Vl.current!==null?(e=Op(e,n,a),It(e,t)||(Pe=!0),e):(va&42)===0||(va&1073741824)!==0&&(re&261930)===0?(Pe=!0,e.memoizedState=n):(e=e0(),W.lanes|=e,ni|=e,t)}function hv(e,t,n,a,i){var l=de.p;de.p=l!==0&&8>l?l:8;var r=Z.T,s={};Z.T=s,_p(e,!1,t,n);try{var o=i(),u=Z.S;if(u!==null&&u(s,o),o!==null&&typeof o=="object"&&typeof o.then=="function"){var c=Zk(o,a);es(e,t,c,Jt(e))}else es(e,t,a,Jt(e))}catch(f){es(e,t,{then:function(){},status:"rejected",reason:f},Jt())}finally{de.p=l,r!==null&&s.types!==null&&(r.types=s.types),Z.T=r}}function eE(){}function _d(e,t,n,a){if(e.tag!==5)throw Error(A(476));var i=mv(e).queue;hv(e,i,t,Ei,n===null?eE:function(){return gv(e),n(a)})}function mv(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Ei,baseState:Ei,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Sa,lastRenderedState:Ei},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Sa,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function gv(e){var t=mv(e);t.next===null&&(t=e.alternate.memoizedState),es(e,t.next.queue,{},Jt())}function Cp(){return mt(ys)}function yv(){return $e().memoizedState}function bv(){return $e().memoizedState}function tE(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Jt();e=Qa(n);var a=$a(t,e,n);a!==null&&(Bt(a,t,n),Ir(a,t,n)),t={cache:mp()},e.payload=t;return}t=t.return}}function nE(e,t,n){var a=Jt();n={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Xu(e)?Sv(t,n):(n=fp(e,t,n,a),n!==null&&(Bt(n,e,a),Tv(n,t,a)))}function vv(e,t,n){var a=Jt();es(e,t,n,a)}function es(e,t,n,a){var i={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Xu(e))Sv(t,i);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var r=t.lastRenderedState,s=l(r,n);if(i.hasEagerState=!0,i.eagerState=s,It(s,r))return ju(e,t,i,0),Ee===null&&qu(),!1}catch(o){}if(n=fp(e,t,i,a),n!==null)return Bt(n,e,a),Tv(n,t,a),!0}return!1}function _p(e,t,n,a){if(a={lane:2,revertLane:jp(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Xu(e)){if(t)throw Error(A(479))}else t=fp(e,n,a,2),t!==null&&Bt(t,e,2)}function Xu(e){var t=e.alternate;return e===W||t!==null&&t===W}function Sv(e,t){Ll=bu=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Tv(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,rb(e,n)}}var hs={readContext:mt,use:Yu,useCallback:qe,useContext:qe,useEffect:qe,useImperativeHandle:qe,useLayoutEffect:qe,useInsertionEffect:qe,useMemo:qe,useReducer:qe,useRef:qe,useState:qe,useDebugValue:qe,useDeferredValue:qe,useTransition:qe,useSyncExternalStore:qe,useId:qe,useHostTransitionStatus:qe,useFormState:qe,useActionState:qe,useOptimistic:qe,useMemoCache:qe,useCacheRefresh:qe};hs.useEffectEvent=qe;var xv={readContext:mt,use:Yu,useCallback:function(e,t){return Nt().memoizedState=[e,t===void 0?null:t],e},useContext:mt,useEffect:ly,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,Po(4194308,4,uv.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Po(4194308,4,e,t)},useInsertionEffect:function(e,t){Po(4,2,e,t)},useMemo:function(e,t){var n=Nt();t=t===void 0?null:t;var a=e();if(Di){qa(!0);try{e()}finally{qa(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=Nt();if(n!==void 0){var i=n(t);if(Di){qa(!0);try{n(t)}finally{qa(!1)}}}else i=t;return a.memoizedState=a.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},a.queue=e,e=e.dispatch=nE.bind(null,W,e),[a.memoizedState,e]},useRef:function(e){var t=Nt();return e={current:e},t.memoizedState=e},useState:function(e){e=Od(e);var t=e.queue,n=vv.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Rp,useDeferredValue:function(e,t){var n=Nt();return Op(n,e,t)},useTransition:function(){var e=Od(!1);return e=hv.bind(null,W,e.queue,!0,!1),Nt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=W,i=Nt();if(se){if(n===void 0)throw Error(A(407));n=n()}else{if(n=t(),Ee===null)throw Error(A(349));(re&127)!==0||Fb(a,t,n)}i.memoizedState=n;var l={value:n,getSnapshot:t};return i.queue=l,ly(Ib.bind(null,a,l,e),[e]),a.flags|=2048,Gl(9,{destroy:void 0},Jb.bind(null,a,l,n,t),null),n},useId:function(){var e=Nt(),t=Ee.identifierPrefix;if(se){var n=Hn,a=Un;n=(a&~(1<<32-Ft(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=vu++,0<n&&(t+="H"+n.toString(32)),t+="_"}else n=Fk++,t="_"+t+"r_"+n.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:Cp,useFormState:ny,useActionState:ny,useOptimistic:function(e){var t=Nt();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=_p.bind(null,W,!0,n),n.dispatch=t,[e,t]},useMemoCache:wp,useCacheRefresh:function(){return Nt().memoizedState=tE.bind(null,W)},useEffectEvent:function(e){var t=Nt(),n={impl:e};return t.memoizedState=n,function(){if((fe&2)!==0)throw Error(A(440));return n.impl.apply(void 0,arguments)}}},Dp={readContext:mt,use:Yu,useCallback:fv,useContext:mt,useEffect:Np,useImperativeHandle:cv,useInsertionEffect:sv,useLayoutEffect:ov,useMemo:dv,useReducer:Io,useRef:lv,useState:function(){return Io(Sa)},useDebugValue:Rp,useDeferredValue:function(e,t){var n=$e();return pv(n,ke.memoizedState,e,t)},useTransition:function(){var e=Io(Sa)[0],t=$e().memoizedState;return[typeof e=="boolean"?e:Ns(e),t]},useSyncExternalStore:Zb,useId:yv,useHostTransitionStatus:Cp,useFormState:ay,useActionState:ay,useOptimistic:function(e,t){var n=$e();return ev(n,ke,e,t)},useMemoCache:wp,useCacheRefresh:bv};Dp.useEffectEvent=rv;var kv={readContext:mt,use:Yu,useCallback:fv,useContext:mt,useEffect:Np,useImperativeHandle:cv,useInsertionEffect:sv,useLayoutEffect:ov,useMemo:dv,useReducer:qf,useRef:lv,useState:function(){return qf(Sa)},useDebugValue:Rp,useDeferredValue:function(e,t){var n=$e();return ke===null?Op(n,e,t):pv(n,ke.memoizedState,e,t)},useTransition:function(){var e=qf(Sa)[0],t=$e().memoizedState;return[typeof e=="boolean"?e:Ns(e),t]},useSyncExternalStore:Zb,useId:yv,useHostTransitionStatus:Cp,useFormState:iy,useActionState:iy,useOptimistic:function(e,t){var n=$e();return ke!==null?ev(n,ke,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:wp,useCacheRefresh:bv};kv.useEffectEvent=rv;function jf(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:ze({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Dd={enqueueSetState:function(e,t,n){e=e._reactInternals;var a=Jt(),i=Qa(a);i.payload=t,n!=null&&(i.callback=n),t=$a(e,i,a),t!==null&&(Bt(t,e,a),Ir(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=Jt(),i=Qa(a);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=$a(e,i,a),t!==null&&(Bt(t,e,a),Ir(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Jt(),a=Qa(n);a.tag=2,t!=null&&(a.callback=t),t=$a(e,a,n),t!==null&&(Bt(t,e,n),Ir(t,e,n))}};function ry(e,t,n,a,i,l,r){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,l,r):t.prototype&&t.prototype.isPureReactComponent?!us(n,a)||!us(i,l):!0}function sy(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&Dd.enqueueReplaceState(t,t.state,null)}function Mi(e,t){var n=t;if("ref"in t){n={};for(var a in t)a!=="ref"&&(n[a]=t[a])}if(e=e.defaultProps){n===t&&(n=ze({},n));for(var i in e)n[i]===void 0&&(n[i]=e[i])}return n}function Ev(e){fu(e)}function wv(e){console.error(e)}function Av(e){fu(e)}function Su(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function oy(e,t,n){try{var a=e.onCaughtError;a(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(i){setTimeout(function(){throw i})}}function Md(e,t,n){return n=Qa(n),n.tag=3,n.payload={element:null},n.callback=function(){Su(e,t)},n}function Nv(e){return e=Qa(e),e.tag=3,e}function Rv(e,t,n,a){var i=n.type.getDerivedStateFromError;if(typeof i=="function"){var l=a.value;e.payload=function(){return i(l)},e.callback=function(){oy(t,n,a)}}var r=n.stateNode;r!==null&&typeof r.componentDidCatch=="function"&&(e.callback=function(){oy(t,n,a),typeof i!="function"&&(Za===null?Za=new Set([this]):Za.add(this));var s=a.stack;this.componentDidCatch(a.value,{componentStack:s!==null?s:""})})}function aE(e,t,n,a,i){if(n.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=n.alternate,t!==null&&Jl(t,n,i,!0),n=Pt.current,n!==null){switch(n.tag){case 31:case 13:return hn===null?wu():n.alternate===null&&je===0&&(je=3),n.flags&=-257,n.flags|=65536,n.lanes=i,a===mu?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([a]):t.add(a),If(e,a,i)),!1;case 22:return n.flags|=65536,a===mu?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([a]):n.add(a)),If(e,a,i)),!1}throw Error(A(435,n.tag))}return If(e,a,i),wu(),!1}if(se)return t=Pt.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=i,a!==Sd&&(e=Error(A(422),{cause:a}),fs(dn(e,n)))):(a!==Sd&&(t=Error(A(423),{cause:a}),fs(dn(t,n))),e=e.current.alternate,e.flags|=65536,i&=-i,e.lanes|=i,a=dn(a,n),i=Md(e.stateNode,a,i),Hf(e,i),je!==4&&(je=2)),!1;var l=Error(A(520),{cause:a});if(l=dn(l,n),as===null?as=[l]:as.push(l),je!==4&&(je=2),t===null)return!0;a=dn(a,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=i&-i,n.lanes|=e,e=Md(n.stateNode,a,e),Hf(n,e),!1;case 1:if(t=n.type,l=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||l!==null&&typeof l.componentDidCatch=="function"&&(Za===null||!Za.has(l))))return n.flags|=65536,i&=-i,n.lanes|=i,i=Nv(i),Rv(i,e,n,a),Hf(n,i),!1}n=n.return}while(n!==null);return!1}var Mp=Error(A(461)),Pe=!1;function dt(e,t,n,a){t.child=e===null?Gb(t,null,n,a):_i(t,e.child,n,a)}function uy(e,t,n,a,i){n=n.render;var l=t.ref;if("ref"in a){var r={};for(var s in a)s!=="ref"&&(r[s]=a[s])}else r=a;return Ci(t),a=Tp(e,t,n,r,l,i),s=xp(),e!==null&&!Pe?(kp(e,t,i),Ta(e,t,i)):(se&&s&&pp(t),t.flags|=1,dt(e,t,a,i),t.child)}function cy(e,t,n,a,i){if(e===null){var l=n.type;return typeof l=="function"&&!dp(l)&&l.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=l,Ov(e,t,l,a,i)):(e=Fo(n.type,null,a,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(l=e.child,!zp(e,i)){var r=l.memoizedProps;if(n=n.compare,n=n!==null?n:us,n(r,a)&&e.ref===t.ref)return Ta(e,t,i)}return t.flags|=1,e=ma(l,a),e.ref=t.ref,e.return=t,t.child=e}function Ov(e,t,n,a,i){if(e!==null){var l=e.memoizedProps;if(us(l,a)&&e.ref===t.ref)if(Pe=!1,t.pendingProps=a=l,zp(e,i))(e.flags&131072)!==0&&(Pe=!0);else return t.lanes=e.lanes,Ta(e,t,i)}return zd(e,t,n,a,i)}function Cv(e,t,n,a){var i=a.children,l=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.mode==="hidden"){if((t.flags&128)!==0){if(l=l!==null?l.baseLanes|n:n,e!==null){for(a=t.child=e.child,i=0;a!==null;)i=i|a.lanes|a.childLanes,a=a.sibling;a=i&~l}else a=0,t.child=null;return fy(e,t,l,n,a)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Jo(t,l!==null?l.cachePool:null),l!==null?Wg(t,l):Nd(),Xb(t);else return a=t.lanes=536870912,fy(e,t,l!==null?l.baseLanes|n:n,n,a)}else l!==null?(Jo(t,l.cachePool),Wg(t,l),Ua(t),t.memoizedState=null):(e!==null&&Jo(t,null),Nd(),Ua(t));return dt(e,t,i,n),t.child}function Xr(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function fy(e,t,n,a,i){var l=gp();return l=l===null?null:{parent:Ie._currentValue,pool:l},t.memoizedState={baseLanes:n,cachePool:l},e!==null&&Jo(t,null),Nd(),Xb(t),e!==null&&Jl(e,t,a,!0),t.childLanes=i,null}function Wo(e,t){return t=Tu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function dy(e,t,n){return _i(t,e.child,null,n),e=Wo(t,t.pendingProps),e.flags|=2,Kt(t),t.memoizedState=null,e}function iE(e,t,n){var a=t.pendingProps,i=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(se){if(a.mode==="hidden")return e=Wo(t,a),t.lanes=536870912,Xr(null,e);if(Rd(t),(e=Me)?(e=x0(e,pn),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Wa!==null?{id:Un,overflow:Hn}:null,retryLane:536870912,hydrationErrors:null},n=Lb(e),n.return=t,t.child=n,ht=t,Me=null)):e=null,e===null)throw ei(t);return t.lanes=536870912,null}return Wo(t,a)}var l=e.memoizedState;if(l!==null){var r=l.dehydrated;if(Rd(t),i)if(t.flags&256)t.flags&=-257,t=dy(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(A(558));else if(Pe||Jl(e,t,n,!1),i=(n&e.childLanes)!==0,Pe||i){if(a=Ee,a!==null&&(r=sb(a,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,Ui(e,r),Bt(a,e,r),Mp;wu(),t=dy(e,t,n)}else e=l.treeContext,Me=mn(r.nextSibling),ht=t,se=!0,Xa=null,pn=!1,e!==null&&Ub(t,e),t=Wo(t,a),t.flags|=4096;return t}return e=ma(e.child,{mode:a.mode,children:a.children}),e.ref=t.ref,t.child=e,e.return=t,e}function eu(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(A(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function zd(e,t,n,a,i){return Ci(t),n=Tp(e,t,n,a,void 0,i),a=xp(),e!==null&&!Pe?(kp(e,t,i),Ta(e,t,i)):(se&&a&&pp(t),t.flags|=1,dt(e,t,n,i),t.child)}function py(e,t,n,a,i,l){return Ci(t),t.updateQueue=null,n=$b(t,a,n,i),Qb(e),a=xp(),e!==null&&!Pe?(kp(e,t,l),Ta(e,t,l)):(se&&a&&pp(t),t.flags|=1,dt(e,t,n,l),t.child)}function hy(e,t,n,a,i){if(Ci(t),t.stateNode===null){var l=Al,r=n.contextType;typeof r=="object"&&r!==null&&(l=mt(r)),l=new n(a,l),t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,l.updater=Dd,t.stateNode=l,l._reactInternals=t,l=t.stateNode,l.props=a,l.state=t.memoizedState,l.refs={},bp(t),r=n.contextType,l.context=typeof r=="object"&&r!==null?mt(r):Al,l.state=t.memoizedState,r=n.getDerivedStateFromProps,typeof r=="function"&&(jf(t,n,r,a),l.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof l.getSnapshotBeforeUpdate=="function"||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(r=l.state,typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount(),r!==l.state&&Dd.enqueueReplaceState(l,l.state,null),Wr(t,a,l,i),Pr(),l.state=t.memoizedState),typeof l.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(e===null){l=t.stateNode;var s=t.memoizedProps,o=Mi(n,s);l.props=o;var u=l.context,c=n.contextType;r=Al,typeof c=="object"&&c!==null&&(r=mt(c));var f=n.getDerivedStateFromProps;c=typeof f=="function"||typeof l.getSnapshotBeforeUpdate=="function",s=t.pendingProps!==s,c||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(s||u!==r)&&sy(t,l,a,r),za=!1;var d=t.memoizedState;l.state=d,Wr(t,a,l,i),Pr(),u=t.memoizedState,s||d!==u||za?(typeof f=="function"&&(jf(t,n,f,a),u=t.memoizedState),(o=za||ry(t,n,o,a,d,u,r))?(c||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount()),typeof l.componentDidMount=="function"&&(t.flags|=4194308)):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=u),l.props=a,l.state=u,l.context=r,a=o):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{l=t.stateNode,wd(e,t),r=t.memoizedProps,c=Mi(n,r),l.props=c,f=t.pendingProps,d=l.context,u=n.contextType,o=Al,typeof u=="object"&&u!==null&&(o=mt(u)),s=n.getDerivedStateFromProps,(u=typeof s=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(r!==f||d!==o)&&sy(t,l,a,o),za=!1,d=t.memoizedState,l.state=d,Wr(t,a,l,i),Pr();var h=t.memoizedState;r!==f||d!==h||za||e!==null&&e.dependencies!==null&&hu(e.dependencies)?(typeof s=="function"&&(jf(t,n,s,a),h=t.memoizedState),(c=za||ry(t,n,c,a,d,h,o)||e!==null&&e.dependencies!==null&&hu(e.dependencies))?(u||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(a,h,o),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(a,h,o)),typeof l.componentDidUpdate=="function"&&(t.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof l.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=h),l.props=a,l.state=h,l.context=o,a=c):(typeof l.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),a=!1)}return l=a,eu(e,t),a=(t.flags&128)!==0,l||a?(l=t.stateNode,n=a&&typeof n.getDerivedStateFromError!="function"?null:l.render(),t.flags|=1,e!==null&&a?(t.child=_i(t,e.child,null,i),t.child=_i(t,null,n,i)):dt(e,t,n,i),t.memoizedState=l.state,e=t.child):e=Ta(e,t,i),e}function my(e,t,n,a){return Oi(),t.flags|=256,dt(e,t,n,a),t.child}var Vf={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Gf(e){return{baseLanes:e,cachePool:qb()}}function Yf(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=Qt),e}function _v(e,t,n){var a=t.pendingProps,i=!1,l=(t.flags&128)!==0,r;if((r=l)||(r=e!==null&&e.memoizedState===null?!1:(Qe.current&2)!==0),r&&(i=!0,t.flags&=-129),r=(t.flags&32)!==0,t.flags&=-33,e===null){if(se){if(i?Ba(t):Ua(t),(e=Me)?(e=x0(e,pn),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Wa!==null?{id:Un,overflow:Hn}:null,retryLane:536870912,hydrationErrors:null},n=Lb(e),n.return=t,t.child=n,ht=t,Me=null)):e=null,e===null)throw ei(t);return Zd(e)?t.lanes=32:t.lanes=536870912,null}var s=a.children;return a=a.fallback,i?(Ua(t),i=t.mode,s=Tu({mode:"hidden",children:s},i),a=wi(a,i,n,null),s.return=t,a.return=t,s.sibling=a,t.child=s,a=t.child,a.memoizedState=Gf(n),a.childLanes=Yf(e,r,n),t.memoizedState=Vf,Xr(null,a)):(Ba(t),Ld(t,s))}var o=e.memoizedState;if(o!==null&&(s=o.dehydrated,s!==null)){if(l)t.flags&256?(Ba(t),t.flags&=-257,t=Kf(e,t,n)):t.memoizedState!==null?(Ua(t),t.child=e.child,t.flags|=128,t=null):(Ua(t),s=a.fallback,i=t.mode,a=Tu({mode:"visible",children:a.children},i),s=wi(s,i,n,null),s.flags|=2,a.return=t,s.return=t,a.sibling=s,t.child=a,_i(t,e.child,null,n),a=t.child,a.memoizedState=Gf(n),a.childLanes=Yf(e,r,n),t.memoizedState=Vf,t=Xr(null,a));else if(Ba(t),Zd(s)){if(r=s.nextSibling&&s.nextSibling.dataset,r)var u=r.dgst;r=u,a=Error(A(419)),a.stack="",a.digest=r,fs({value:a,source:null,stack:null}),t=Kf(e,t,n)}else if(Pe||Jl(e,t,n,!1),r=(n&e.childLanes)!==0,Pe||r){if(r=Ee,r!==null&&(a=sb(r,n),a!==0&&a!==o.retryLane))throw o.retryLane=a,Ui(e,a),Bt(r,e,a),Mp;$d(s)||wu(),t=Kf(e,t,n)}else $d(s)?(t.flags|=192,t.child=e.child,t=null):(e=o.treeContext,Me=mn(s.nextSibling),ht=t,se=!0,Xa=null,pn=!1,e!==null&&Ub(t,e),t=Ld(t,a.children),t.flags|=4096);return t}return i?(Ua(t),s=a.fallback,i=t.mode,o=e.child,u=o.sibling,a=ma(o,{mode:"hidden",children:a.children}),a.subtreeFlags=o.subtreeFlags&65011712,u!==null?s=ma(u,s):(s=wi(s,i,n,null),s.flags|=2),s.return=t,a.return=t,a.sibling=s,t.child=a,Xr(null,a),a=t.child,s=e.child.memoizedState,s===null?s=Gf(n):(i=s.cachePool,i!==null?(o=Ie._currentValue,i=i.parent!==o?{parent:o,pool:o}:i):i=qb(),s={baseLanes:s.baseLanes|n,cachePool:i}),a.memoizedState=s,a.childLanes=Yf(e,r,n),t.memoizedState=Vf,Xr(e.child,a)):(Ba(t),n=e.child,e=n.sibling,n=ma(n,{mode:"visible",children:a.children}),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Ld(e,t){return t=Tu({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function Tu(e,t){return e=Xt(22,e,null,t),e.lanes=0,e}function Kf(e,t,n){return _i(t,e.child,null,n),e=Ld(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function gy(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),xd(e.return,t,n)}function Xf(e,t,n,a,i,l){var r=e.memoizedState;r===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:i,treeForkCount:l}:(r.isBackwards=t,r.rendering=null,r.renderingStartTime=0,r.last=a,r.tail=n,r.tailMode=i,r.treeForkCount=l)}function Dv(e,t,n){var a=t.pendingProps,i=a.revealOrder,l=a.tail;a=a.children;var r=Qe.current,s=(r&2)!==0;if(s?(r=r&1|2,t.flags|=128):r&=1,Ne(Qe,r),dt(e,t,a,n),a=se?cs:0,!s&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&gy(e,n,t);else if(e.tag===19)gy(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case"forwards":for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&yu(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Xf(t,!1,i,n,l,a);break;case"backwards":case"unstable_legacy-backwards":for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&yu(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Xf(t,!0,n,null,l,a);break;case"together":Xf(t,!1,null,null,void 0,a);break;default:t.memoizedState=null}return t.child}function Ta(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),ni|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(Jl(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(A(153));if(t.child!==null){for(e=t.child,n=ma(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=ma(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function zp(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&hu(e)))}function lE(e,t,n){switch(t.tag){case 3:su(t,t.stateNode.containerInfo),La(t,Ie,e.memoizedState.cache),Oi();break;case 27:case 5:ud(t);break;case 4:su(t,t.stateNode.containerInfo);break;case 10:La(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Rd(t),null;break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Ba(t),t.flags|=128,null):(n&t.child.childLanes)!==0?_v(e,t,n):(Ba(t),e=Ta(e,t,n),e!==null?e.sibling:null);Ba(t);break;case 19:var i=(e.flags&128)!==0;if(a=(n&t.childLanes)!==0,a||(Jl(e,t,n,!1),a=(n&t.childLanes)!==0),i){if(a)return Dv(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),Ne(Qe,Qe.current),a)break;return null;case 22:return t.lanes=0,Cv(e,t,n,t.pendingProps);case 24:La(t,Ie,e.memoizedState.cache)}return Ta(e,t,n)}function Mv(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)Pe=!0;else{if(!zp(e,n)&&(t.flags&128)===0)return Pe=!1,lE(e,t,n);Pe=(e.flags&131072)!==0}else Pe=!1,se&&(t.flags&1048576)!==0&&Bb(t,cs,t.index);switch(t.lanes=0,t.tag){case 16:e:{var a=t.pendingProps;if(e=xi(t.elementType),t.type=e,typeof e=="function")dp(e)?(a=Mi(e,a),t.tag=1,t=hy(null,t,e,a,n)):(t.tag=0,t=zd(null,t,e,a,n));else{if(e!=null){var i=e.$$typeof;if(i===Pd){t.tag=11,t=uy(null,t,e,a,n);break e}else if(i===Wd){t.tag=14,t=cy(null,t,e,a,n);break e}}throw t=sd(e)||e,Error(A(306,t,""))}}return t;case 0:return zd(e,t,t.type,t.pendingProps,n);case 1:return a=t.type,i=Mi(a,t.pendingProps),hy(e,t,a,i,n);case 3:e:{if(su(t,t.stateNode.containerInfo),e===null)throw Error(A(387));a=t.pendingProps;var l=t.memoizedState;i=l.element,wd(e,t),Wr(t,a,null,n);var r=t.memoizedState;if(a=r.cache,La(t,Ie,a),a!==l.cache&&kd(t,[Ie],n,!0),Pr(),a=r.element,l.isDehydrated)if(l={element:a,isDehydrated:!1,cache:r.cache},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){t=my(e,t,a,n);break e}else if(a!==i){i=dn(Error(A(424)),t),fs(i),t=my(e,t,a,n);break e}else for(e=t.stateNode.containerInfo,e.nodeType===9?e=e.body:e=e.nodeName==="HTML"?e.ownerDocument.body:e,Me=mn(e.firstChild),ht=t,se=!0,Xa=null,pn=!0,n=Gb(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Oi(),a===i){t=Ta(e,t,n);break e}dt(e,t,a,n)}t=t.child}return t;case 26:return eu(e,t),e===null?(n=Hy(t.type,null,t.pendingProps,null))?t.memoizedState=n:se||(n=t.type,e=t.pendingProps,a=Ou(Ka.current).createElement(n),a[pt]=t,a[Ut]=e,gt(a,n,e),ot(a),t.stateNode=a):t.memoizedState=Hy(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return ud(t),e===null&&se&&(a=t.stateNode=k0(t.type,t.pendingProps,Ka.current),ht=t,pn=!0,i=Me,ii(t.type)?(Fd=i,Me=mn(a.firstChild)):Me=i),dt(e,t,t.pendingProps.children,n),eu(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&se&&((i=a=Me)&&(a=ME(a,t.type,t.pendingProps,pn),a!==null?(t.stateNode=a,ht=t,Me=mn(a.firstChild),pn=!1,i=!0):i=!1),i||ei(t)),ud(t),i=t.type,l=t.pendingProps,r=e!==null?e.memoizedProps:null,a=l.children,Xd(i,l)?a=null:r!==null&&Xd(i,r)&&(t.flags|=32),t.memoizedState!==null&&(i=Tp(e,t,Jk,null,null,n),ys._currentValue=i),eu(e,t),dt(e,t,a,n),t.child;case 6:return e===null&&se&&((e=n=Me)&&(n=zE(n,t.pendingProps,pn),n!==null?(t.stateNode=n,ht=t,Me=null,e=!0):e=!1),e||ei(t)),null;case 13:return _v(e,t,n);case 4:return su(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=_i(t,null,a,n):dt(e,t,a,n),t.child;case 11:return uy(e,t,t.type,t.pendingProps,n);case 7:return dt(e,t,t.pendingProps,n),t.child;case 8:return dt(e,t,t.pendingProps.children,n),t.child;case 12:return dt(e,t,t.pendingProps.children,n),t.child;case 10:return a=t.pendingProps,La(t,t.type,a.value),dt(e,t,a.children,n),t.child;case 9:return i=t.type._context,a=t.pendingProps.children,Ci(t),i=mt(i),a=a(i),t.flags|=1,dt(e,t,a,n),t.child;case 14:return cy(e,t,t.type,t.pendingProps,n);case 15:return Ov(e,t,t.type,t.pendingProps,n);case 19:return Dv(e,t,n);case 31:return iE(e,t,n);case 22:return Cv(e,t,n,t.pendingProps);case 24:return Ci(t),a=mt(Ie),e===null?(i=gp(),i===null&&(i=Ee,l=mp(),i.pooledCache=l,l.refCount++,l!==null&&(i.pooledCacheLanes|=n),i=l),t.memoizedState={parent:a,cache:i},bp(t),La(t,Ie,i)):((e.lanes&n)!==0&&(wd(e,t),Wr(t,null,null,n),Pr()),i=e.memoizedState,l=t.memoizedState,i.parent!==a?(i={parent:a,cache:a},t.memoizedState=i,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=i),La(t,Ie,a)):(a=l.cache,La(t,Ie,a),a!==i.cache&&kd(t,[Ie],n,!0))),dt(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(A(156,t.tag))}function ra(e){e.flags|=4}function Qf(e,t,n,a,i){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i)if(e.stateNode.complete)e.flags|=8192;else if(a0())e.flags|=8192;else throw Ni=mu,yp}else e.flags&=-16777217}function yy(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!A0(t))if(a0())e.flags|=8192;else throw Ni=mu,yp}function Ho(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?ib():536870912,e.lanes|=t,Yl|=t)}function Hr(e,t){if(!se)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function De(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,a|=i.subtreeFlags&65011712,a|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,a|=i.subtreeFlags,a|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function rE(e,t,n){var a=t.pendingProps;switch(hp(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return De(t),null;case 1:return De(t),null;case 3:return n=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),ga(Ie),Ul(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(hl(t)?ra(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Uf())),De(t),null;case 26:var i=t.type,l=t.memoizedState;return e===null?(ra(t),l!==null?(De(t),yy(t,l)):(De(t),Qf(t,i,null,a,n))):l?l!==e.memoizedState?(ra(t),De(t),yy(t,l)):(De(t),t.flags&=-16777217):(e=e.memoizedProps,e!==a&&ra(t),De(t),Qf(t,i,e,a,n)),null;case 27:if(ou(t),n=Ka.current,i=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&ra(t);else{if(!a){if(t.stateNode===null)throw Error(A(166));return De(t),null}e=jn.current,hl(t)?Qg(t,e):(e=k0(i,a,n),t.stateNode=e,ra(t))}return De(t),null;case 5:if(ou(t),i=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&ra(t);else{if(!a){if(t.stateNode===null)throw Error(A(166));return De(t),null}if(l=jn.current,hl(t))Qg(t,l);else{var r=Ou(Ka.current);switch(l){case 1:l=r.createElementNS("http://www.w3.org/2000/svg",i);break;case 2:l=r.createElementNS("http://www.w3.org/1998/Math/MathML",i);break;default:switch(i){case"svg":l=r.createElementNS("http://www.w3.org/2000/svg",i);break;case"math":l=r.createElementNS("http://www.w3.org/1998/Math/MathML",i);break;case"script":l=r.createElement("div"),l.innerHTML="<script><\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?r.createElement("select",{is:a.is}):r.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?r.createElement(i,{is:a.is}):r.createElement(i)}}l[pt]=t,l[Ut]=a;e:for(r=t.child;r!==null;){if(r.tag===5||r.tag===6)l.appendChild(r.stateNode);else if(r.tag!==4&&r.tag!==27&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break e;for(;r.sibling===null;){if(r.return===null||r.return===t)break e;r=r.return}r.sibling.return=r.return,r=r.sibling}t.stateNode=l;e:switch(gt(l,i,a),i){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&ra(t)}}return De(t),Qf(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&ra(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(A(166));if(e=Ka.current,hl(t)){if(e=t.stateNode,n=t.memoizedProps,a=null,i=ht,i!==null)switch(i.tag){case 27:case 5:a=i.memoizedProps}e[pt]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||v0(e.nodeValue,n)),e||ei(t,!0)}else e=Ou(e).createTextNode(a),e[pt]=t,t.stateNode=e}return De(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=hl(t),n!==null){if(e===null){if(!a)throw Error(A(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(A(557));e[pt]=t}else Oi(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;De(t),e=!1}else n=Uf(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Kt(t),t):(Kt(t),null);if((t.flags&128)!==0)throw Error(A(558))}return De(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=hl(t),a!==null&&a.dehydrated!==null){if(e===null){if(!i)throw Error(A(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(A(317));i[pt]=t}else Oi(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;De(t),i=!1}else i=Uf(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Kt(t),t):(Kt(t),null)}return Kt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,i=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(i=a.alternate.memoizedState.cachePool.pool),l=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(l=a.memoizedState.cachePool.pool),l!==i&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Ho(t,t.updateQueue),De(t),null);case 4:return Ul(),e===null&&Vp(t.stateNode.containerInfo),De(t),null;case 10:return ga(t.type),De(t),null;case 19:if(ut(Qe),a=t.memoizedState,a===null)return De(t),null;if(i=(t.flags&128)!==0,l=a.rendering,l===null)if(i)Hr(a,!1);else{if(je!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(l=yu(e),l!==null){for(t.flags|=128,Hr(a,!1),e=l.updateQueue,t.updateQueue=e,Ho(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)zb(n,e),n=n.sibling;return Ne(Qe,Qe.current&1|2),se&&ca(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&$t()>ku&&(t.flags|=128,i=!0,Hr(a,!1),t.lanes=4194304)}else{if(!i)if(e=yu(l),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,Ho(t,e),Hr(a,!0),a.tail===null&&a.tailMode==="hidden"&&!l.alternate&&!se)return De(t),null}else 2*$t()-a.renderingStartTime>ku&&n!==536870912&&(t.flags|=128,i=!0,Hr(a,!1),t.lanes=4194304);a.isBackwards?(l.sibling=t.child,t.child=l):(e=a.last,e!==null?e.sibling=l:t.child=l,a.last=l)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=$t(),e.sibling=null,n=Qe.current,Ne(Qe,i?n&1|2:n&1),se&&ca(t,a.treeForkCount),e):(De(t),null);case 22:case 23:return Kt(t),vp(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(De(t),t.subtreeFlags&6&&(t.flags|=8192)):De(t),n=t.updateQueue,n!==null&&Ho(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&ut(Ai),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ga(Ie),De(t),null;case 25:return null;case 30:return null}throw Error(A(156,t.tag))}function sE(e,t){switch(hp(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ga(Ie),Ul(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ou(t),null;case 31:if(t.memoizedState!==null){if(Kt(t),t.alternate===null)throw Error(A(340));Oi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Kt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(A(340));Oi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ut(Qe),null;case 4:return Ul(),null;case 10:return ga(t.type),null;case 22:case 23:return Kt(t),vp(),e!==null&&ut(Ai),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ga(Ie),null;case 25:return null;default:return null}}function zv(e,t){switch(hp(t),t.tag){case 3:ga(Ie),Ul();break;case 26:case 27:case 5:ou(t);break;case 4:Ul();break;case 31:t.memoizedState!==null&&Kt(t);break;case 13:Kt(t);break;case 19:ut(Qe);break;case 10:ga(t.type);break;case 22:case 23:Kt(t),vp(),e!==null&&ut(Ai);break;case 24:ga(Ie)}}function Rs(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var i=a.next;n=i;do{if((n.tag&e)===e){a=void 0;var l=n.create,r=n.inst;a=l(),r.destroy=a}n=n.next}while(n!==i)}}catch(s){ve(t,t.return,s)}}function ti(e,t,n){try{var a=t.updateQueue,i=a!==null?a.lastEffect:null;if(i!==null){var l=i.next;a=l;do{if((a.tag&e)===e){var r=a.inst,s=r.destroy;if(s!==void 0){r.destroy=void 0,i=t;var o=n,u=s;try{u()}catch(c){ve(i,o,c)}}}a=a.next}while(a!==l)}}catch(c){ve(t,t.return,c)}}function Lv(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Kb(t,n)}catch(a){ve(e,e.return,a)}}}function Bv(e,t,n){n.props=Mi(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(a){ve(e,t,a)}}function ts(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof n=="function"?e.refCleanup=n(a):n.current=a}}catch(i){ve(e,t,i)}}function qn(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{a()}catch(i){ve(e,t,i)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(i){ve(e,t,i)}else n.current=null}function Uv(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&a.focus();break e;case"img":n.src?a.src=n.src:n.srcSet&&(a.srcset=n.srcSet)}}catch(i){ve(e,e.return,i)}}function $f(e,t,n){try{var a=e.stateNode;NE(a,e.type,n,t),a[Ut]=t}catch(i){ve(e,e.return,i)}}function Hv(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&ii(e.type)||e.tag===4}function Zf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Hv(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&ii(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Bd(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=pa));else if(a!==4&&(a===27&&ii(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Bd(e,t,n),e=e.sibling;e!==null;)Bd(e,t,n),e=e.sibling}function xu(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&ii(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(xu(e,t,n),e=e.sibling;e!==null;)xu(e,t,n),e=e.sibling}function qv(e){var t=e.stateNode,n=e.memoizedProps;try{for(var a=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);gt(t,a,n),t[pt]=e,t[Ut]=n}catch(l){ve(e,e.return,l)}}var fa=!1,Je=!1,Ff=!1,by=typeof WeakSet=="function"?WeakSet:Set,st=null;function oE(e,t){if(e=e.containerInfo,Yd=Mu,e=Ab(e),up(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var i=a.anchorOffset,l=a.focusNode;a=a.focusOffset;try{n.nodeType,l.nodeType}catch(v){n=null;break e}var r=0,s=-1,o=-1,u=0,c=0,f=e,d=null;t:for(;;){for(var h;f!==n||i!==0&&f.nodeType!==3||(s=r+i),f!==l||a!==0&&f.nodeType!==3||(o=r+a),f.nodeType===3&&(r+=f.nodeValue.length),(h=f.firstChild)!==null;)d=f,f=h;for(;;){if(f===e)break t;if(d===n&&++u===i&&(s=r),d===l&&++c===a&&(o=r),(h=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=h}n=s===-1||o===-1?null:{start:s,end:o}}else n=null}n=n||{start:0,end:0}}else n=null;for(Kd={focusedElem:e,selectionRange:n},Mu=!1,st=t;st!==null;)if(t=st,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,st=e;else for(;st!==null;){switch(t=st,l=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n<e.length;n++)i=e[n],i.ref.impl=i.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&l!==null){e=void 0,n=t,i=l.memoizedProps,l=l.memoizedState,a=n.stateNode;try{var b=Mi(n.type,i);e=a.getSnapshotBeforeUpdate(b,l),a.__reactInternalSnapshotBeforeUpdate=e}catch(v){ve(n,n.return,v)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)Qd(e);else if(n===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Qd(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(A(163))}if(e=t.sibling,e!==null){e.return=t.return,st=e;break}st=t.return}}function jv(e,t,n){var a=n.flags;switch(n.tag){case 0:case 11:case 15:oa(e,n),a&4&&Rs(5,n);break;case 1:if(oa(e,n),a&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(r){ve(n,n.return,r)}else{var i=Mi(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(r){ve(n,n.return,r)}}a&64&&Lv(n),a&512&&ts(n,n.return);break;case 3:if(oa(e,n),a&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{Kb(e,t)}catch(r){ve(n,n.return,r)}}break;case 27:t===null&&a&4&&qv(n);case 26:case 5:oa(e,n),t===null&&a&4&&Uv(n),a&512&&ts(n,n.return);break;case 12:oa(e,n);break;case 31:oa(e,n),a&4&&Yv(e,n);break;case 13:oa(e,n),a&4&&Kv(e,n),a&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=yE.bind(null,n),LE(e,n))));break;case 22:if(a=n.memoizedState!==null||fa,!a){t=t!==null&&t.memoizedState!==null||Je,i=fa;var l=Je;fa=a,(Je=t)&&!l?ua(e,n,(n.subtreeFlags&8772)!==0):oa(e,n),fa=i,Je=l}break;case 30:break;default:oa(e,n)}}function Vv(e){var t=e.alternate;t!==null&&(e.alternate=null,Vv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&ap(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var He=null,zt=!1;function sa(e,t,n){for(n=n.child;n!==null;)Gv(e,t,n),n=n.sibling}function Gv(e,t,n){if(Zt&&typeof Zt.onCommitFiberUnmount=="function")try{Zt.onCommitFiberUnmount(Ts,n)}catch(l){}switch(n.tag){case 26:Je||qn(n,t),sa(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Je||qn(n,t);var a=He,i=zt;ii(n.type)&&(He=n.stateNode,zt=!1),sa(e,t,n),ls(n.stateNode),He=a,zt=i;break;case 5:Je||qn(n,t);case 6:if(a=He,i=zt,He=null,sa(e,t,n),He=a,zt=i,He!==null)if(zt)try{(He.nodeType===9?He.body:He.nodeName==="HTML"?He.ownerDocument.body:He).removeChild(n.stateNode)}catch(l){ve(n,t,l)}else try{He.removeChild(n.stateNode)}catch(l){ve(n,t,l)}break;case 18:He!==null&&(zt?(e=He,My(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,n.stateNode),$l(e)):My(He,n.stateNode));break;case 4:a=He,i=zt,He=n.stateNode.containerInfo,zt=!0,sa(e,t,n),He=a,zt=i;break;case 0:case 11:case 14:case 15:ti(2,n,t),Je||ti(4,n,t),sa(e,t,n);break;case 1:Je||(qn(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"&&Bv(n,t,a)),sa(e,t,n);break;case 21:sa(e,t,n);break;case 22:Je=(a=Je)||n.memoizedState!==null,sa(e,t,n),Je=a;break;default:sa(e,t,n)}}function Yv(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{$l(e)}catch(n){ve(t,t.return,n)}}}function Kv(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{$l(e)}catch(n){ve(t,t.return,n)}}function uE(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new by),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new by),t;default:throw Error(A(435,e.tag))}}function qo(e,t){var n=uE(e);t.forEach(function(a){if(!n.has(a)){n.add(a);var i=bE.bind(null,e,a);a.then(i,i)}})}function Dt(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var i=n[a],l=e,r=t,s=r;e:for(;s!==null;){switch(s.tag){case 27:if(ii(s.type)){He=s.stateNode,zt=!1;break e}break;case 5:He=s.stateNode,zt=!1;break e;case 3:case 4:He=s.stateNode.containerInfo,zt=!0;break e}s=s.return}if(He===null)throw Error(A(160));Gv(l,r,i),He=null,zt=!1,l=i.alternate,l!==null&&(l.return=null),i.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)Xv(t,e),t=t.sibling}var wn=null;function Xv(e,t){var n=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Dt(t,e),Mt(e),a&4&&(ti(3,e,e.return),Rs(3,e),ti(5,e,e.return));break;case 1:Dt(t,e),Mt(e),a&512&&(Je||n===null||qn(n,n.return)),a&64&&fa&&(e=e.updateQueue,e!==null&&(a=e.callbacks,a!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?a:n.concat(a))));break;case 26:var i=wn;if(Dt(t,e),Mt(e),a&512&&(Je||n===null||qn(n,n.return)),a&4){var l=n!==null?n.memoizedState:null;if(a=e.memoizedState,n===null)if(a===null)if(e.stateNode===null){e:{a=e.type,n=e.memoizedProps,i=i.ownerDocument||i;t:switch(a){case"title":l=i.getElementsByTagName("title")[0],(!l||l[Es]||l[pt]||l.namespaceURI==="http://www.w3.org/2000/svg"||l.hasAttribute("itemprop"))&&(l=i.createElement(a),i.head.insertBefore(l,i.querySelector("head > title"))),gt(l,a,n),l[pt]=e,ot(l),a=l;break e;case"link":var r=jy("link","href",i).get(a+(n.href||""));if(r){for(var s=0;s<r.length;s++)if(l=r[s],l.getAttribute("href")===(n.href==null||n.href===""?null:n.href)&&l.getAttribute("rel")===(n.rel==null?null:n.rel)&&l.getAttribute("title")===(n.title==null?null:n.title)&&l.getAttribute("crossorigin")===(n.crossOrigin==null?null:n.crossOrigin)){r.splice(s,1);break t}}l=i.createElement(a),gt(l,a,n),i.head.appendChild(l);break;case"meta":if(r=jy("meta","content",i).get(a+(n.content||""))){for(s=0;s<r.length;s++)if(l=r[s],l.getAttribute("content")===(n.content==null?null:""+n.content)&&l.getAttribute("name")===(n.name==null?null:n.name)&&l.getAttribute("property")===(n.property==null?null:n.property)&&l.getAttribute("http-equiv")===(n.httpEquiv==null?null:n.httpEquiv)&&l.getAttribute("charset")===(n.charSet==null?null:n.charSet)){r.splice(s,1);break t}}l=i.createElement(a),gt(l,a,n),i.head.appendChild(l);break;default:throw Error(A(468,a))}l[pt]=e,ot(l),a=l}e.stateNode=a}else Vy(i,e.type,e.stateNode);else e.stateNode=qy(i,a,e.memoizedProps);else l!==a?(l===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):l.count--,a===null?Vy(i,e.type,e.stateNode):qy(i,a,e.memoizedProps)):a===null&&e.stateNode!==null&&$f(e,e.memoizedProps,n.memoizedProps)}break;case 27:Dt(t,e),Mt(e),a&512&&(Je||n===null||qn(n,n.return)),n!==null&&a&4&&$f(e,e.memoizedProps,n.memoizedProps);break;case 5:if(Dt(t,e),Mt(e),a&512&&(Je||n===null||qn(n,n.return)),e.flags&32){i=e.stateNode;try{ql(i,"")}catch(b){ve(e,e.return,b)}}a&4&&e.stateNode!=null&&(i=e.memoizedProps,$f(e,i,n!==null?n.memoizedProps:i)),a&1024&&(Ff=!0);break;case 6:if(Dt(t,e),Mt(e),a&4){if(e.stateNode===null)throw Error(A(162));a=e.memoizedProps,n=e.stateNode;try{n.nodeValue=a}catch(b){ve(e,e.return,b)}}break;case 3:if(au=null,i=wn,wn=Cu(t.containerInfo),Dt(t,e),wn=i,Mt(e),a&4&&n!==null&&n.memoizedState.isDehydrated)try{$l(t.containerInfo)}catch(b){ve(e,e.return,b)}Ff&&(Ff=!1,Qv(e));break;case 4:a=wn,wn=Cu(e.stateNode.containerInfo),Dt(t,e),Mt(e),wn=a;break;case 12:Dt(t,e),Mt(e);break;case 31:Dt(t,e),Mt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,qo(e,a)));break;case 13:Dt(t,e),Mt(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&(Qu=$t()),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,qo(e,a)));break;case 22:i=e.memoizedState!==null;var o=n!==null&&n.memoizedState!==null,u=fa,c=Je;if(fa=u||i,Je=c||o,Dt(t,e),Je=c,fa=u,Mt(e),a&8192)e:for(t=e.stateNode,t._visibility=i?t._visibility&-2:t._visibility|1,i&&(n===null||o||fa||Je||ki(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){o=n=t;try{if(l=o.stateNode,i)r=l.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{s=o.stateNode;var f=o.memoizedProps.style,d=f!=null&&f.hasOwnProperty("display")?f.display:null;s.style.display=d==null||typeof d=="boolean"?"":(""+d).trim()}}catch(b){ve(o,o.return,b)}}}else if(t.tag===6){if(n===null){o=t;try{o.stateNode.nodeValue=i?"":o.memoizedProps}catch(b){ve(o,o.return,b)}}}else if(t.tag===18){if(n===null){o=t;try{var h=o.stateNode;i?zy(h,!0):zy(o.stateNode,!1)}catch(b){ve(o,o.return,b)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=e.updateQueue,a!==null&&(n=a.retryQueue,n!==null&&(a.retryQueue=null,qo(e,n))));break;case 19:Dt(t,e),Mt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,qo(e,a)));break;case 30:break;case 21:break;default:Dt(t,e),Mt(e)}}function Mt(e){var t=e.flags;if(t&2){try{for(var n,a=e.return;a!==null;){if(Hv(a)){n=a;break}a=a.return}if(n==null)throw Error(A(160));switch(n.tag){case 27:var i=n.stateNode,l=Zf(e);xu(e,l,i);break;case 5:var r=n.stateNode;n.flags&32&&(ql(r,""),n.flags&=-33);var s=Zf(e);xu(e,s,r);break;case 3:case 4:var o=n.stateNode.containerInfo,u=Zf(e);Bd(e,u,o);break;default:throw Error(A(161))}}catch(c){ve(e,e.return,c)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Qv(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;Qv(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function oa(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)jv(e,t.alternate,t),t=t.sibling}function ki(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ti(4,t,t.return),ki(t);break;case 1:qn(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount=="function"&&Bv(t,t.return,n),ki(t);break;case 27:ls(t.stateNode);case 26:case 5:qn(t,t.return),ki(t);break;case 22:t.memoizedState===null&&ki(t);break;case 30:ki(t);break;default:ki(t)}e=e.sibling}}function ua(e,t,n){for(n=n&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,i=e,l=t,r=l.flags;switch(l.tag){case 0:case 11:case 15:ua(i,l,n),Rs(4,l);break;case 1:if(ua(i,l,n),a=l,i=a.stateNode,typeof i.componentDidMount=="function")try{i.componentDidMount()}catch(u){ve(a,a.return,u)}if(a=l,i=a.updateQueue,i!==null){var s=a.stateNode;try{var o=i.shared.hiddenCallbacks;if(o!==null)for(i.shared.hiddenCallbacks=null,i=0;i<o.length;i++)Yb(o[i],s)}catch(u){ve(a,a.return,u)}}n&&r&64&&Lv(l),ts(l,l.return);break;case 27:qv(l);case 26:case 5:ua(i,l,n),n&&a===null&&r&4&&Uv(l),ts(l,l.return);break;case 12:ua(i,l,n);break;case 31:ua(i,l,n),n&&r&4&&Yv(i,l);break;case 13:ua(i,l,n),n&&r&4&&Kv(i,l);break;case 22:l.memoizedState===null&&ua(i,l,n),ts(l,l.return);break;case 30:break;default:ua(i,l,n)}t=t.sibling}}function Lp(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&As(n))}function Bp(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&As(e))}function En(e,t,n,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)$v(e,t,n,a),t=t.sibling}function $v(e,t,n,a){var i=t.flags;switch(t.tag){case 0:case 11:case 15:En(e,t,n,a),i&2048&&Rs(9,t);break;case 1:En(e,t,n,a);break;case 3:En(e,t,n,a),i&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&As(e)));break;case 12:if(i&2048){En(e,t,n,a),e=t.stateNode;try{var l=t.memoizedProps,r=l.id,s=l.onPostCommit;typeof s=="function"&&s(r,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(o){ve(t,t.return,o)}}else En(e,t,n,a);break;case 31:En(e,t,n,a);break;case 13:En(e,t,n,a);break;case 23:break;case 22:l=t.stateNode,r=t.alternate,t.memoizedState!==null?l._visibility&2?En(e,t,n,a):ns(e,t):l._visibility&2?En(e,t,n,a):(l._visibility|=2,gl(e,t,n,a,(t.subtreeFlags&10256)!==0||!1)),i&2048&&Lp(r,t);break;case 24:En(e,t,n,a),i&2048&&Bp(t.alternate,t);break;default:En(e,t,n,a)}}function gl(e,t,n,a,i){for(i=i&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var l=e,r=t,s=n,o=a,u=r.flags;switch(r.tag){case 0:case 11:case 15:gl(l,r,s,o,i),Rs(8,r);break;case 23:break;case 22:var c=r.stateNode;r.memoizedState!==null?c._visibility&2?gl(l,r,s,o,i):ns(l,r):(c._visibility|=2,gl(l,r,s,o,i)),i&&u&2048&&Lp(r.alternate,r);break;case 24:gl(l,r,s,o,i),i&&u&2048&&Bp(r.alternate,r);break;default:gl(l,r,s,o,i)}t=t.sibling}}function ns(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,a=t,i=a.flags;switch(a.tag){case 22:ns(n,a),i&2048&&Lp(a.alternate,a);break;case 24:ns(n,a),i&2048&&Bp(a.alternate,a);break;default:ns(n,a)}t=t.sibling}}var Qr=8192;function ml(e,t,n){if(e.subtreeFlags&Qr)for(e=e.child;e!==null;)Zv(e,t,n),e=e.sibling}function Zv(e,t,n){switch(e.tag){case 26:ml(e,t,n),e.flags&Qr&&e.memoizedState!==null&&$E(n,wn,e.memoizedState,e.memoizedProps);break;case 5:ml(e,t,n);break;case 3:case 4:var a=wn;wn=Cu(e.stateNode.containerInfo),ml(e,t,n),wn=a;break;case 22:e.memoizedState===null&&(a=e.alternate,a!==null&&a.memoizedState!==null?(a=Qr,Qr=16777216,ml(e,t,n),Qr=a):ml(e,t,n));break;default:ml(e,t,n)}}function Fv(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function qr(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];st=a,Iv(a,e)}Fv(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Jv(e),e=e.sibling}function Jv(e){switch(e.tag){case 0:case 11:case 15:qr(e),e.flags&2048&&ti(9,e,e.return);break;case 3:qr(e);break;case 12:qr(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,tu(e)):qr(e);break;default:qr(e)}}function tu(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];st=a,Iv(a,e)}Fv(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ti(8,t,t.return),tu(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,tu(t));break;default:tu(t)}e=e.sibling}}function Iv(e,t){for(;st!==null;){var n=st;switch(n.tag){case 0:case 11:case 15:ti(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var a=n.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:As(n.memoizedState.cache)}if(a=n.child,a!==null)a.return=n,st=a;else e:for(n=e;st!==null;){a=st;var i=a.sibling,l=a.return;if(Vv(a),a===n){st=null;break e}if(i!==null){i.return=l,st=i;break e}st=l}}}var cE={getCacheForType:function(e){var t=mt(Ie),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return mt(Ie).controller.signal}},fE=typeof WeakMap=="function"?WeakMap:Map,fe=0,Ee=null,ie=null,re=0,be=0,Yt=null,Va=!1,Pl=!1,Up=!1,xa=0,je=0,ni=0,Ri=0,Hp=0,Qt=0,Yl=0,as=null,Lt=null,Ud=!1,Qu=0,Pv=0,ku=1/0,Eu=null,Za=null,nt=0,Fa=null,Kl=null,ya=0,Hd=0,qd=null,Wv=null,is=0,jd=null;function Jt(){return(fe&2)!==0&&re!==0?re&-re:Z.T!==null?jp():ob()}function e0(){if(Qt===0)if((re&536870912)===0||se){var e=Oo;Oo<<=1,(Oo&3932160)===0&&(Oo=262144),Qt=e}else Qt=536870912;return e=Pt.current,e!==null&&(e.flags|=32),Qt}function Bt(e,t,n){(e===Ee&&(be===2||be===9)||e.cancelPendingCommit!==null)&&(Xl(e,0),Ga(e,re,Qt,!1)),ks(e,n),((fe&2)===0||e!==Ee)&&(e===Ee&&((fe&2)===0&&(Ri|=n),je===4&&Ga(e,re,Qt,!1)),Gn(e))}function t0(e,t,n){if((fe&6)!==0)throw Error(A(327));var a=!n&&(t&127)===0&&(t&e.expiredLanes)===0||xs(e,t),i=a?hE(e,t):Jf(e,t,!0),l=a;do{if(i===0){Pl&&!a&&Ga(e,t,0,!1);break}else{if(n=e.current.alternate,l&&!dE(n)){i=Jf(e,t,!1),l=!1;continue}if(i===2){if(l=t,e.errorRecoveryDisabledLanes&l)var r=0;else r=e.pendingLanes&-536870913,r=r!==0?r:r&536870912?536870912:0;if(r!==0){t=r;e:{var s=e;i=as;var o=s.current.memoizedState.isDehydrated;if(o&&(Xl(s,r).flags|=256),r=Jf(s,r,!1),r!==2){if(Up&&!o){s.errorRecoveryDisabledLanes|=l,Ri|=l,i=4;break e}l=Lt,Lt=i,l!==null&&(Lt===null?Lt=l:Lt.push.apply(Lt,l))}i=r}if(l=!1,i!==2)continue}}if(i===1){Xl(e,0),Ga(e,t,0,!0);break}e:{switch(a=e,l=i,l){case 0:case 1:throw Error(A(345));case 4:if((t&4194048)!==t)break;case 6:Ga(a,t,Qt,!Va);break e;case 2:Lt=null;break;case 3:case 5:break;default:throw Error(A(329))}if((t&62914560)===t&&(i=Qu+300-$t(),10<i)){if(Ga(a,t,Qt,!Va),Lu(a,0,!0)!==0)break e;ya=t,a.timeoutHandle=T0(vy.bind(null,a,n,Lt,Eu,Ud,t,Qt,Ri,Yl,Va,l,"Throttled",-0,0),i);break e}vy(a,n,Lt,Eu,Ud,t,Qt,Ri,Yl,Va,l,null,-0,0)}}break}while(!0);Gn(e)}function vy(e,t,n,a,i,l,r,s,o,u,c,f,d,h){if(e.timeoutHandle=-1,f=t.subtreeFlags,f&8192||(f&16785408)===16785408){f={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:pa},Zv(t,l,f);var b=(l&62914560)===l?Qu-$t():(l&4194048)===l?Pv-$t():0;if(b=ZE(f,b),b!==null){ya=l,e.cancelPendingCommit=b(Ty.bind(null,e,t,l,n,a,i,r,s,o,c,f,null,d,h)),Ga(e,l,r,!u);return}}Ty(e,t,l,n,a,i,r,s,o)}function dE(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var a=0;a<n.length;a++){var i=n[a],l=i.getSnapshot;i=i.value;try{if(!It(l(),i))return!1}catch(r){return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Ga(e,t,n,a){t&=~Hp,t&=~Ri,e.suspendedLanes|=t,e.pingedLanes&=~t,a&&(e.warmLanes|=t),a=e.expirationTimes;for(var i=t;0<i;){var l=31-Ft(i),r=1<<l;a[l]=-1,i&=~r}n!==0&&lb(e,n,t)}function $u(){return(fe&6)===0?(Os(0,!1),!1):!0}function qp(){if(ie!==null){if(be===0)var e=ie.return;else e=ie,ha=Hi=null,Ep(e),zl=null,ds=0,e=ie;for(;e!==null;)zv(e.alternate,e),e=e.return;ie=null}}function Xl(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,CE(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),ya=0,qp(),Ee=e,ie=n=ma(e.current,null),re=t,be=0,Yt=null,Va=!1,Pl=xs(e,t),Up=!1,Yl=Qt=Hp=Ri=ni=je=0,Lt=as=null,Ud=!1,(t&8)!==0&&(t|=t&32);var a=e.entangledLanes;if(a!==0)for(e=e.entanglements,a&=t;0<a;){var i=31-Ft(a),l=1<<i;t|=e[i],a&=~l}return xa=t,qu(),n}function n0(e,t){W=null,Z.H=hs,t===Il||t===Vu?(t=Ig(),be=3):t===yp?(t=Ig(),be=4):be=t===Mp?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,Yt=t,ie===null&&(je=1,Su(e,dn(t,e.current)))}function a0(){var e=Pt.current;return e===null?!0:(re&4194048)===re?hn===null:(re&62914560)===re||(re&536870912)!==0?e===hn:!1}function i0(){var e=Z.H;return Z.H=hs,e===null?hs:e}function l0(){var e=Z.A;return Z.A=cE,e}function wu(){je=4,Va||(re&4194048)!==re&&Pt.current!==null||(Pl=!0),(ni&134217727)===0&&(Ri&134217727)===0||Ee===null||Ga(Ee,re,Qt,!1)}function Jf(e,t,n){var a=fe;fe|=2;var i=i0(),l=l0();(Ee!==e||re!==t)&&(Eu=null,Xl(e,t)),t=!1;var r=je;e:do try{if(be!==0&&ie!==null){var s=ie,o=Yt;switch(be){case 8:qp(),r=6;break e;case 3:case 2:case 9:case 6:Pt.current===null&&(t=!0);var u=be;if(be=0,Yt=null,Ol(e,s,o,u),n&&Pl){r=0;break e}break;default:u=be,be=0,Yt=null,Ol(e,s,o,u)}}pE(),r=je;break}catch(c){n0(e,c)}while(!0);return t&&e.shellSuspendCounter++,ha=Hi=null,fe=a,Z.H=i,Z.A=l,ie===null&&(Ee=null,re=0,qu()),r}function pE(){for(;ie!==null;)r0(ie)}function hE(e,t){var n=fe;fe|=2;var a=i0(),i=l0();Ee!==e||re!==t?(Eu=null,ku=$t()+500,Xl(e,t)):Pl=xs(e,t);e:do try{if(be!==0&&ie!==null){t=ie;var l=Yt;t:switch(be){case 1:be=0,Yt=null,Ol(e,t,l,1);break;case 2:case 9:if(Jg(l)){be=0,Yt=null,Sy(t);break}t=function(){be!==2&&be!==9||Ee!==e||(be=7),Gn(e)},l.then(t,t);break e;case 3:be=7;break e;case 4:be=5;break e;case 7:Jg(l)?(be=0,Yt=null,Sy(t)):(be=0,Yt=null,Ol(e,t,l,7));break;case 5:var r=null;switch(ie.tag){case 26:r=ie.memoizedState;case 5:case 27:var s=ie;if(r?A0(r):s.stateNode.complete){be=0,Yt=null;var o=s.sibling;if(o!==null)ie=o;else{var u=s.return;u!==null?(ie=u,Zu(u)):ie=null}break t}}be=0,Yt=null,Ol(e,t,l,5);break;case 6:be=0,Yt=null,Ol(e,t,l,6);break;case 8:qp(),je=6;break e;default:throw Error(A(462))}}mE();break}catch(c){n0(e,c)}while(!0);return ha=Hi=null,Z.H=a,Z.A=i,fe=n,ie!==null?0:(Ee=null,re=0,qu(),je)}function mE(){for(;ie!==null&&!Hx();)r0(ie)}function r0(e){var t=Mv(e.alternate,e,xa);e.memoizedProps=e.pendingProps,t===null?Zu(e):ie=t}function Sy(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=py(n,t,t.pendingProps,t.type,void 0,re);break;case 11:t=py(n,t,t.pendingProps,t.type.render,t.ref,re);break;case 5:Ep(t);default:zv(n,t),t=ie=zb(t,xa),t=Mv(n,t,xa)}e.memoizedProps=e.pendingProps,t===null?Zu(e):ie=t}function Ol(e,t,n,a){ha=Hi=null,Ep(t),zl=null,ds=0;var i=t.return;try{if(aE(e,i,t,n,re)){je=1,Su(e,dn(n,e.current)),ie=null;return}}catch(l){if(i!==null)throw ie=i,l;je=1,Su(e,dn(n,e.current)),ie=null;return}t.flags&32768?(se||a===1?e=!0:Pl||(re&536870912)!==0?e=!1:(Va=e=!0,(a===2||a===9||a===3||a===6)&&(a=Pt.current,a!==null&&a.tag===13&&(a.flags|=16384))),s0(t,e)):Zu(t)}function Zu(e){var t=e;do{if((t.flags&32768)!==0){s0(t,Va);return}e=t.return;var n=rE(t.alternate,t,xa);if(n!==null){ie=n;return}if(t=t.sibling,t!==null){ie=t;return}ie=t=e}while(t!==null);je===0&&(je=5)}function s0(e,t){do{var n=sE(e.alternate,e);if(n!==null){n.flags&=32767,ie=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){ie=e;return}ie=e=n}while(e!==null);je=6,ie=null}function Ty(e,t,n,a,i,l,r,s,o){e.cancelPendingCommit=null;do Fu();while(nt!==0);if((fe&6)!==0)throw Error(A(327));if(t!==null){if(t===e.current)throw Error(A(177));if(l=t.lanes|t.childLanes,l|=cp,Zx(e,n,l,r,s,o),e===Ee&&(ie=Ee=null,re=0),Kl=t,Fa=e,ya=n,Hd=l,qd=i,Wv=a,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,vE(uu,function(){return d0(),null})):(e.callbackNode=null,e.callbackPriority=0),a=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||a){a=Z.T,Z.T=null,i=de.p,de.p=2,r=fe,fe|=4;try{oE(e,t,n)}finally{fe=r,de.p=i,Z.T=a}}nt=1,o0(),u0(),c0()}}function o0(){if(nt===1){nt=0;var e=Fa,t=Kl,n=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||n){n=Z.T,Z.T=null;var a=de.p;de.p=2;var i=fe;fe|=4;try{Xv(t,e);var l=Kd,r=Ab(e.containerInfo),s=l.focusedElem,o=l.selectionRange;if(r!==s&&s&&s.ownerDocument&&wb(s.ownerDocument.documentElement,s)){if(o!==null&&up(s)){var u=o.start,c=o.end;if(c===void 0&&(c=u),"selectionStart"in s)s.selectionStart=u,s.selectionEnd=Math.min(c,s.value.length);else{var f=s.ownerDocument||document,d=f&&f.defaultView||window;if(d.getSelection){var h=d.getSelection(),b=s.textContent.length,v=Math.min(o.start,b),E=o.end===void 0?v:Math.min(o.end,b);!h.extend&&v>E&&(r=E,E=v,v=r);var m=Yg(s,v),p=Yg(s,E);if(m&&p&&(h.rangeCount!==1||h.anchorNode!==m.node||h.anchorOffset!==m.offset||h.focusNode!==p.node||h.focusOffset!==p.offset)){var y=f.createRange();y.setStart(m.node,m.offset),h.removeAllRanges(),v>E?(h.addRange(y),h.extend(p.node,p.offset)):(y.setEnd(p.node,p.offset),h.addRange(y))}}}}for(f=[],h=s;h=h.parentNode;)h.nodeType===1&&f.push({element:h,left:h.scrollLeft,top:h.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;s<f.length;s++){var S=f[s];S.element.scrollLeft=S.left,S.element.scrollTop=S.top}}Mu=!!Yd,Kd=Yd=null}finally{fe=i,de.p=a,Z.T=n}}e.current=t,nt=2}}function u0(){if(nt===2){nt=0;var e=Fa,t=Kl,n=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||n){n=Z.T,Z.T=null;var a=de.p;de.p=2;var i=fe;fe|=4;try{jv(e,t.alternate,t)}finally{fe=i,de.p=a,Z.T=n}}nt=3}}function c0(){if(nt===4||nt===3){nt=0,qx();var e=Fa,t=Kl,n=ya,a=Wv;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?nt=5:(nt=0,Kl=Fa=null,f0(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(Za=null),np(n),t=t.stateNode,Zt&&typeof Zt.onCommitFiberRoot=="function")try{Zt.onCommitFiberRoot(Ts,t,void 0,(t.current.flags&128)===128)}catch(o){}if(a!==null){t=Z.T,i=de.p,de.p=2,Z.T=null;try{for(var l=e.onRecoverableError,r=0;r<a.length;r++){var s=a[r];l(s.value,{componentStack:s.stack})}}finally{Z.T=t,de.p=i}}(ya&3)!==0&&Fu(),Gn(e),i=e.pendingLanes,(n&261930)!==0&&(i&42)!==0?e===jd?is++:(is=0,jd=e):is=0,Os(0,!1)}}function f0(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,As(t)))}function Fu(){return o0(),u0(),c0(),d0()}function d0(){if(nt!==5)return!1;var e=Fa,t=Hd;Hd=0;var n=np(ya),a=Z.T,i=de.p;try{de.p=32>n?32:n,Z.T=null,n=qd,qd=null;var l=Fa,r=ya;if(nt=0,Kl=Fa=null,ya=0,(fe&6)!==0)throw Error(A(331));var s=fe;if(fe|=4,Jv(l.current),$v(l,l.current,r,n),fe=s,Os(0,!1),Zt&&typeof Zt.onPostCommitFiberRoot=="function")try{Zt.onPostCommitFiberRoot(Ts,l)}catch(o){}return!0}finally{de.p=i,Z.T=a,f0(e,t)}}function xy(e,t,n){t=dn(n,t),t=Md(e.stateNode,t,2),e=$a(e,t,2),e!==null&&(ks(e,2),Gn(e))}function ve(e,t,n){if(e.tag===3)xy(e,e,n);else for(;t!==null;){if(t.tag===3){xy(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Za===null||!Za.has(a))){e=dn(n,e),n=Nv(2),a=$a(t,n,2),a!==null&&(Rv(n,a,t,e),ks(a,2),Gn(a));break}}t=t.return}}function If(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new fE;var i=new Set;a.set(t,i)}else i=a.get(t),i===void 0&&(i=new Set,a.set(t,i));i.has(n)||(Up=!0,i.add(n),e=gE.bind(null,e,t,n),t.then(e,e))}function gE(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ee===e&&(re&n)===n&&(je===4||je===3&&(re&62914560)===re&&300>$t()-Qu?(fe&2)===0&&Xl(e,0):Hp|=n,Yl===re&&(Yl=0)),Gn(e)}function p0(e,t){t===0&&(t=ib()),e=Ui(e,t),e!==null&&(ks(e,t),Gn(e))}function yE(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),p0(e,n)}function bE(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(A(314))}a!==null&&a.delete(t),p0(e,n)}function vE(e,t){return ep(e,t)}var Au=null,yl=null,Vd=!1,Nu=!1,Pf=!1,Ya=0;function Gn(e){e!==yl&&e.next===null&&(yl===null?Au=yl=e:yl=yl.next=e),Nu=!0,Vd||(Vd=!0,TE())}function Os(e,t){if(!Pf&&Nu){Pf=!0;do for(var n=!1,a=Au;a!==null;){if(!t)if(e!==0){var i=a.pendingLanes;if(i===0)var l=0;else{var r=a.suspendedLanes,s=a.pingedLanes;l=(1<<31-Ft(42|e)+1)-1,l&=i&~(r&~s),l=l&201326741?l&201326741|1:l?l|2:0}l!==0&&(n=!0,ky(a,l))}else l=re,l=Lu(a,a===Ee?l:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(l&3)===0||xs(a,l)||(n=!0,ky(a,l));a=a.next}while(n);Pf=!1}}function SE(){h0()}function h0(){Nu=Vd=!1;var e=0;Ya!==0&&OE()&&(e=Ya);for(var t=$t(),n=null,a=Au;a!==null;){var i=a.next,l=m0(a,t);l===0?(a.next=null,n===null?Au=i:n.next=i,i===null&&(yl=n)):(n=a,(e!==0||(l&3)!==0)&&(Nu=!0)),a=i}nt!==0&&nt!==5||Os(e,!1),Ya!==0&&(Ya=0)}function m0(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,i=e.expirationTimes,l=e.pendingLanes&-62914561;0<l;){var r=31-Ft(l),s=1<<r,o=i[r];o===-1?((s&n)===0||(s&a)!==0)&&(i[r]=$x(s,t)):o<=t&&(e.expiredLanes|=s),l&=~s}if(t=Ee,n=re,n=Lu(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a=e.callbackNode,n===0||e===t&&(be===2||be===9)||e.cancelPendingCommit!==null)return a!==null&&a!==null&&Nf(a),e.callbackNode=null,e.callbackPriority=0;if((n&3)===0||xs(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(a!==null&&Nf(a),np(n)){case 2:case 8:n=nb;break;case 32:n=uu;break;case 268435456:n=ab;break;default:n=uu}return a=g0.bind(null,e),n=ep(n,a),e.callbackPriority=t,e.callbackNode=n,t}return a!==null&&a!==null&&Nf(a),e.callbackPriority=2,e.callbackNode=null,2}function g0(e,t){if(nt!==0&&nt!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Fu()&&e.callbackNode!==n)return null;var a=re;return a=Lu(e,e===Ee?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a===0?null:(t0(e,a,t),m0(e,$t()),e.callbackNode!=null&&e.callbackNode===n?g0.bind(null,e):null)}function ky(e,t){if(Fu())return null;t0(e,t,!0)}function TE(){_E(function(){(fe&6)!==0?ep(tb,SE):h0()})}function jp(){if(Ya===0){var e=jl;e===0&&(e=Ro,Ro<<=1,(Ro&261888)===0&&(Ro=256)),Ya=e}return Ya}function Ey(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Qo(""+e)}function wy(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function xE(e,t,n,a,i){if(t==="submit"&&n&&n.stateNode===i){var l=Ey((i[Ut]||null).action),r=a.submitter;r&&(t=(t=r[Ut]||null)?Ey(t.formAction):r.getAttribute("formAction"),t!==null&&(l=t,r=null));var s=new Bu("action","action",null,a,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(Ya!==0){var o=r?wy(i,r):new FormData(i);_d(n,{pending:!0,data:o,method:i.method,action:l},null,o)}}else typeof l=="function"&&(s.preventDefault(),o=r?wy(i,r):new FormData(i),_d(n,{pending:!0,data:o,method:i.method,action:l},l,o))},currentTarget:i}]})}}for(jo=0;jo<vd.length;jo++)Vo=vd[jo],Ay=Vo.toLowerCase(),Ny=Vo[0].toUpperCase()+Vo.slice(1),An(Ay,"on"+Ny);var Vo,Ay,Ny,jo;An(Rb,"onAnimationEnd");An(Ob,"onAnimationIteration");An(Cb,"onAnimationStart");An("dblclick","onDoubleClick");An("focusin","onFocus");An("focusout","onBlur");An(jk,"onTransitionRun");An(Vk,"onTransitionStart");An(Gk,"onTransitionCancel");An(_b,"onTransitionEnd");Hl("onMouseEnter",["mouseout","mouseover"]);Hl("onMouseLeave",["mouseout","mouseover"]);Hl("onPointerEnter",["pointerout","pointerover"]);Hl("onPointerLeave",["pointerout","pointerover"]);zi("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));zi("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));zi("onBeforeInput",["compositionend","keypress","textInput","paste"]);zi("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));zi("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));zi("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var ms="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),kE=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(ms));function y0(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n],i=a.event;a=a.listeners;e:{var l=void 0;if(t)for(var r=a.length-1;0<=r;r--){var s=a[r],o=s.instance,u=s.currentTarget;if(s=s.listener,o!==l&&i.isPropagationStopped())break e;l=s,i.currentTarget=u;try{l(i)}catch(c){fu(c)}i.currentTarget=null,l=o}else for(r=0;r<a.length;r++){if(s=a[r],o=s.instance,u=s.currentTarget,s=s.listener,o!==l&&i.isPropagationStopped())break e;l=s,i.currentTarget=u;try{l(i)}catch(c){fu(c)}i.currentTarget=null,l=o}}}}function ae(e,t){var n=t[fd];n===void 0&&(n=t[fd]=new Set);var a=e+"__bubble";n.has(a)||(b0(t,e,2,!1),n.add(a))}function Wf(e,t,n){var a=0;t&&(a|=4),b0(n,e,a,t)}var Go="_reactListening"+Math.random().toString(36).slice(2);function Vp(e){if(!e[Go]){e[Go]=!0,ub.forEach(function(n){n!=="selectionchange"&&(kE.has(n)||Wf(n,!1,e),Wf(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Go]||(t[Go]=!0,Wf("selectionchange",!1,t))}}function b0(e,t,n,a){switch(_0(t)){case 2:var i=IE;break;case 8:i=PE;break;default:i=Xp}n=i.bind(null,t,n,e),i=void 0,!gd||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(i=!0),a?i!==void 0?e.addEventListener(t,n,{capture:!0,passive:i}):e.addEventListener(t,n,!0):i!==void 0?e.addEventListener(t,n,{passive:i}):e.addEventListener(t,n,!1)}function ed(e,t,n,a,i){var l=a;if((t&1)===0&&(t&2)===0&&a!==null)e:for(;;){if(a===null)return;var r=a.tag;if(r===3||r===4){var s=a.stateNode.containerInfo;if(s===i)break;if(r===4)for(r=a.return;r!==null;){var o=r.tag;if((o===3||o===4)&&r.stateNode.containerInfo===i)return;r=r.return}for(;s!==null;){if(r=Sl(s),r===null)return;if(o=r.tag,o===5||o===6||o===26||o===27){a=l=r;continue e}s=s.parentNode}}a=a.return}yb(function(){var u=l,c=lp(n),f=[];e:{var d=Db.get(e);if(d!==void 0){var h=Bu,b=e;switch(e){case"keypress":if(Zo(n)===0)break e;case"keydown":case"keyup":h=bk;break;case"focusin":b="focus",h=Df;break;case"focusout":b="blur",h=Df;break;case"beforeblur":case"afterblur":h=Df;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":h=zg;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":h=rk;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":h=Tk;break;case Rb:case Ob:case Cb:h=uk;break;case _b:h=kk;break;case"scroll":case"scrollend":h=ik;break;case"wheel":h=wk;break;case"copy":case"cut":case"paste":h=fk;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":h=Bg;break;case"toggle":case"beforetoggle":h=Nk}var v=(t&4)!==0,E=!v&&(e==="scroll"||e==="scrollend"),m=v?d!==null?d+"Capture":null:d;v=[];for(var p=u,y;p!==null;){var S=p;if(y=S.stateNode,S=S.tag,S!==5&&S!==26&&S!==27||y===null||m===null||(S=ss(p,m),S!=null&&v.push(gs(p,S,y))),E)break;p=p.return}0<v.length&&(d=new h(d,b,null,n,c),f.push({event:d,listeners:v}))}}if((t&7)===0){e:{if(d=e==="mouseover"||e==="pointerover",h=e==="mouseout"||e==="pointerout",d&&n!==md&&(b=n.relatedTarget||n.fromElement)&&(Sl(b)||b[Zl]))break e;if((h||d)&&(d=c.window===c?c:(d=c.ownerDocument)?d.defaultView||d.parentWindow:window,h?(b=n.relatedTarget||n.toElement,h=u,b=b?Sl(b):null,b!==null&&(E=Ss(b),v=b.tag,b!==E||v!==5&&v!==27&&v!==6)&&(b=null)):(h=null,b=u),h!==b)){if(v=zg,S="onMouseLeave",m="onMouseEnter",p="mouse",(e==="pointerout"||e==="pointerover")&&(v=Bg,S="onPointerLeave",m="onPointerEnter",p="pointer"),E=h==null?d:Kr(h),y=b==null?d:Kr(b),d=new v(S,p+"leave",h,n,c),d.target=E,d.relatedTarget=y,S=null,Sl(c)===u&&(v=new v(m,p+"enter",b,n,c),v.target=y,v.relatedTarget=E,S=v),E=S,h&&b)t:{for(v=EE,m=h,p=b,y=0,S=m;S;S=v(S))y++;S=0;for(var x=p;x;x=v(x))S++;for(;0<y-S;)m=v(m),y--;for(;0<S-y;)p=v(p),S--;for(;y--;){if(m===p||p!==null&&m===p.alternate){v=m;break t}m=v(m),p=v(p)}v=null}else v=null;h!==null&&Ry(f,d,h,v,!1),b!==null&&E!==null&&Ry(f,E,b,v,!0)}}e:{if(d=u?Kr(u):window,h=d.nodeName&&d.nodeName.toLowerCase(),h==="select"||h==="input"&&d.type==="file")var R=jg;else if(qg(d))if(kb)R=Uk;else{R=Lk;var N=zk}else h=d.nodeName,!h||h.toLowerCase()!=="input"||d.type!=="checkbox"&&d.type!=="radio"?u&&ip(u.elementType)&&(R=jg):R=Bk;if(R&&(R=R(e,u))){xb(f,R,n,c);break e}N&&N(e,d,u),e==="focusout"&&u&&d.type==="number"&&u.memoizedProps.value!=null&&hd(d,"number",d.value)}switch(N=u?Kr(u):window,e){case"focusin":(qg(N)||N.contentEditable==="true")&&(kl=N,yd=u,Fr=null);break;case"focusout":Fr=yd=kl=null;break;case"mousedown":bd=!0;break;case"contextmenu":case"mouseup":case"dragend":bd=!1,Kg(f,n,c);break;case"selectionchange":if(qk)break;case"keydown":case"keyup":Kg(f,n,c)}var z;if(op)e:{switch(e){case"compositionstart":var D="onCompositionStart";break e;case"compositionend":D="onCompositionEnd";break e;case"compositionupdate":D="onCompositionUpdate";break e}D=void 0}else xl?Sb(e,n)&&(D="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(D="onCompositionStart");D&&(vb&&n.locale!=="ko"&&(xl||D!=="onCompositionStart"?D==="onCompositionEnd"&&xl&&(z=bb()):(ja=c,rp="value"in ja?ja.value:ja.textContent,xl=!0)),N=Ru(u,D),0<N.length&&(D=new Lg(D,e,null,n,c),f.push({event:D,listeners:N}),z?D.data=z:(z=Tb(n),z!==null&&(D.data=z)))),(z=Ok?Ck(e,n):_k(e,n))&&(D=Ru(u,"onBeforeInput"),0<D.length&&(N=new Lg("onBeforeInput","beforeinput",null,n,c),f.push({event:N,listeners:D}),N.data=z)),xE(f,e,u,n,c)}y0(f,t)})}function gs(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Ru(e,t){for(var n=t+"Capture",a=[];e!==null;){var i=e,l=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||l===null||(i=ss(e,n),i!=null&&a.unshift(gs(e,i,l)),i=ss(e,t),i!=null&&a.push(gs(e,i,l))),e.tag===3)return a;e=e.return}return[]}function EE(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Ry(e,t,n,a,i){for(var l=t._reactName,r=[];n!==null&&n!==a;){var s=n,o=s.alternate,u=s.stateNode;if(s=s.tag,o!==null&&o===a)break;s!==5&&s!==26&&s!==27||u===null||(o=u,i?(u=ss(n,l),u!=null&&r.unshift(gs(n,u,o))):i||(u=ss(n,l),u!=null&&r.push(gs(n,u,o)))),n=n.return}r.length!==0&&e.push({event:t,listeners:r})}var wE=/\r\n?/g,AE=/\u0000|\uFFFD/g;function Oy(e){return(typeof e=="string"?e:""+e).replace(wE,"\n").replace(AE,"")}function v0(e,t){return t=Oy(t),Oy(e)===t}function xe(e,t,n,a,i,l){switch(n){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||ql(e,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&ql(e,""+a);break;case"className":_o(e,"class",a);break;case"tabIndex":_o(e,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":_o(e,n,a);break;case"style":gb(e,a,l);break;case"data":if(t!=="object"){_o(e,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||n!=="href")){e.removeAttribute(n);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Qo(""+a),e.setAttribute(n,a);break;case"action":case"formAction":if(typeof a=="function"){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof l=="function"&&(n==="formAction"?(t!=="input"&&xe(e,t,"name",i.name,i,null),xe(e,t,"formEncType",i.formEncType,i,null),xe(e,t,"formMethod",i.formMethod,i,null),xe(e,t,"formTarget",i.formTarget,i,null)):(xe(e,t,"encType",i.encType,i,null),xe(e,t,"method",i.method,i,null),xe(e,t,"target",i.target,i,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=Qo(""+a),e.setAttribute(n,a);break;case"onClick":a!=null&&(e.onclick=pa);break;case"onScroll":a!=null&&ae("scroll",e);break;case"onScrollEnd":a!=null&&ae("scrollend",e);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(A(61));if(n=a.__html,n!=null){if(i.children!=null)throw Error(A(60));e.innerHTML=n}}break;case"multiple":e.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":e.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){e.removeAttribute("xlink:href");break}n=Qo(""+a),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""+a):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":a===!0?e.setAttribute(n,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,a):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?e.setAttribute(n,a):e.removeAttribute(n);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?e.removeAttribute(n):e.setAttribute(n,a);break;case"popover":ae("beforetoggle",e),ae("toggle",e),Xo(e,"popover",a);break;case"xlinkActuate":la(e,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":la(e,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":la(e,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":la(e,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":la(e,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":la(e,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":la(e,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":la(e,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":la(e,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":Xo(e,"is",a);break;case"innerText":case"textContent":break;default:(!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(n=nk.get(n)||n,Xo(e,n,a))}}function Gd(e,t,n,a,i,l){switch(n){case"style":gb(e,a,l);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(A(61));if(n=a.__html,n!=null){if(i.children!=null)throw Error(A(60));e.innerHTML=n}}break;case"children":typeof a=="string"?ql(e,a):(typeof a=="number"||typeof a=="bigint")&&ql(e,""+a);break;case"onScroll":a!=null&&ae("scroll",e);break;case"onScrollEnd":a!=null&&ae("scrollend",e);break;case"onClick":a!=null&&(e.onclick=pa);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!cb.hasOwnProperty(n))e:{if(n[0]==="o"&&n[1]==="n"&&(i=n.endsWith("Capture"),t=n.slice(2,i?n.length-7:void 0),l=e[Ut]||null,l=l!=null?l[n]:null,typeof l=="function"&&e.removeEventListener(t,l,i),typeof a=="function")){typeof l!="function"&&l!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,a,i);break e}n in e?e[n]=a:a===!0?e.setAttribute(n,""):Xo(e,n,a)}}}function gt(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":ae("error",e),ae("load",e);var a=!1,i=!1,l;for(l in n)if(n.hasOwnProperty(l)){var r=n[l];if(r!=null)switch(l){case"src":a=!0;break;case"srcSet":i=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(A(137,t));default:xe(e,t,l,r,n,null)}}i&&xe(e,t,"srcSet",n.srcSet,n,null),a&&xe(e,t,"src",n.src,n,null);return;case"input":ae("invalid",e);var s=l=r=i=null,o=null,u=null;for(a in n)if(n.hasOwnProperty(a)){var c=n[a];if(c!=null)switch(a){case"name":i=c;break;case"type":r=c;break;case"checked":o=c;break;case"defaultChecked":u=c;break;case"value":l=c;break;case"defaultValue":s=c;break;case"children":case"dangerouslySetInnerHTML":if(c!=null)throw Error(A(137,t));break;default:xe(e,t,a,c,n,null)}}pb(e,l,s,o,u,r,i,!1);return;case"select":ae("invalid",e),a=r=l=null;for(i in n)if(n.hasOwnProperty(i)&&(s=n[i],s!=null))switch(i){case"value":l=s;break;case"defaultValue":r=s;break;case"multiple":a=s;default:xe(e,t,i,s,n,null)}t=l,n=r,e.multiple=!!a,t!=null?_l(e,!!a,t,!1):n!=null&&_l(e,!!a,n,!0);return;case"textarea":ae("invalid",e),l=i=a=null;for(r in n)if(n.hasOwnProperty(r)&&(s=n[r],s!=null))switch(r){case"value":a=s;break;case"defaultValue":i=s;break;case"children":l=s;break;case"dangerouslySetInnerHTML":if(s!=null)throw Error(A(91));break;default:xe(e,t,r,s,n,null)}mb(e,a,i,l);return;case"option":for(o in n)n.hasOwnProperty(o)&&(a=n[o],a!=null)&&(o==="selected"?e.selected=a&&typeof a!="function"&&typeof a!="symbol":xe(e,t,o,a,n,null));return;case"dialog":ae("beforetoggle",e),ae("toggle",e),ae("cancel",e),ae("close",e);break;case"iframe":case"object":ae("load",e);break;case"video":case"audio":for(a=0;a<ms.length;a++)ae(ms[a],e);break;case"image":ae("error",e),ae("load",e);break;case"details":ae("toggle",e);break;case"embed":case"source":case"link":ae("error",e),ae("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(u in n)if(n.hasOwnProperty(u)&&(a=n[u],a!=null))switch(u){case"children":case"dangerouslySetInnerHTML":throw Error(A(137,t));default:xe(e,t,u,a,n,null)}return;default:if(ip(t)){for(c in n)n.hasOwnProperty(c)&&(a=n[c],a!==void 0&&Gd(e,t,c,a,n,void 0));return}}for(s in n)n.hasOwnProperty(s)&&(a=n[s],a!=null&&xe(e,t,s,a,n,null))}function NE(e,t,n,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var i=null,l=null,r=null,s=null,o=null,u=null,c=null;for(h in n){var f=n[h];if(n.hasOwnProperty(h)&&f!=null)switch(h){case"checked":break;case"value":break;case"defaultValue":o=f;default:a.hasOwnProperty(h)||xe(e,t,h,null,a,f)}}for(var d in a){var h=a[d];if(f=n[d],a.hasOwnProperty(d)&&(h!=null||f!=null))switch(d){case"type":l=h;break;case"name":i=h;break;case"checked":u=h;break;case"defaultChecked":c=h;break;case"value":r=h;break;case"defaultValue":s=h;break;case"children":case"dangerouslySetInnerHTML":if(h!=null)throw Error(A(137,t));break;default:h!==f&&xe(e,t,d,h,a,f)}}pd(e,r,s,o,u,c,l,i);return;case"select":h=r=s=d=null;for(l in n)if(o=n[l],n.hasOwnProperty(l)&&o!=null)switch(l){case"value":break;case"multiple":h=o;default:a.hasOwnProperty(l)||xe(e,t,l,null,a,o)}for(i in a)if(l=a[i],o=n[i],a.hasOwnProperty(i)&&(l!=null||o!=null))switch(i){case"value":d=l;break;case"defaultValue":s=l;break;case"multiple":r=l;default:l!==o&&xe(e,t,i,l,a,o)}t=s,n=r,a=h,d!=null?_l(e,!!n,d,!1):!!a!=!!n&&(t!=null?_l(e,!!n,t,!0):_l(e,!!n,n?[]:"",!1));return;case"textarea":h=d=null;for(s in n)if(i=n[s],n.hasOwnProperty(s)&&i!=null&&!a.hasOwnProperty(s))switch(s){case"value":break;case"children":break;default:xe(e,t,s,null,a,i)}for(r in a)if(i=a[r],l=n[r],a.hasOwnProperty(r)&&(i!=null||l!=null))switch(r){case"value":d=i;break;case"defaultValue":h=i;break;case"children":break;case"dangerouslySetInnerHTML":if(i!=null)throw Error(A(91));break;default:i!==l&&xe(e,t,r,i,a,l)}hb(e,d,h);return;case"option":for(var b in n)d=n[b],n.hasOwnProperty(b)&&d!=null&&!a.hasOwnProperty(b)&&(b==="selected"?e.selected=!1:xe(e,t,b,null,a,d));for(o in a)d=a[o],h=n[o],a.hasOwnProperty(o)&&d!==h&&(d!=null||h!=null)&&(o==="selected"?e.selected=d&&typeof d!="function"&&typeof d!="symbol":xe(e,t,o,d,a,h));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var v in n)d=n[v],n.hasOwnProperty(v)&&d!=null&&!a.hasOwnProperty(v)&&xe(e,t,v,null,a,d);for(u in a)if(d=a[u],h=n[u],a.hasOwnProperty(u)&&d!==h&&(d!=null||h!=null))switch(u){case"children":case"dangerouslySetInnerHTML":if(d!=null)throw Error(A(137,t));break;default:xe(e,t,u,d,a,h)}return;default:if(ip(t)){for(var E in n)d=n[E],n.hasOwnProperty(E)&&d!==void 0&&!a.hasOwnProperty(E)&&Gd(e,t,E,void 0,a,d);for(c in a)d=a[c],h=n[c],!a.hasOwnProperty(c)||d===h||d===void 0&&h===void 0||Gd(e,t,c,d,a,h);return}}for(var m in n)d=n[m],n.hasOwnProperty(m)&&d!=null&&!a.hasOwnProperty(m)&&xe(e,t,m,null,a,d);for(f in a)d=a[f],h=n[f],!a.hasOwnProperty(f)||d===h||d==null&&h==null||xe(e,t,f,d,a,h)}function Cy(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function RE(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,n=performance.getEntriesByType("resource"),a=0;a<n.length;a++){var i=n[a],l=i.transferSize,r=i.initiatorType,s=i.duration;if(l&&s&&Cy(r)){for(r=0,s=i.responseEnd,a+=1;a<n.length;a++){var o=n[a],u=o.startTime;if(u>s)break;var c=o.transferSize,f=o.initiatorType;c&&Cy(f)&&(o=o.responseEnd,r+=c*(o<s?1:(s-u)/(o-u)))}if(--a,t+=8*(l+r)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var Yd=null,Kd=null;function Ou(e){return e.nodeType===9?e:e.ownerDocument}function _y(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function S0(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function Xd(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var td=null;function OE(){var e=window.event;return e&&e.type==="popstate"?e===td?!1:(td=e,!0):(td=null,!1)}var T0=typeof setTimeout=="function"?setTimeout:void 0,CE=typeof clearTimeout=="function"?clearTimeout:void 0,Dy=typeof Promise=="function"?Promise:void 0,_E=typeof queueMicrotask=="function"?queueMicrotask:typeof Dy<"u"?function(e){return Dy.resolve(null).then(e).catch(DE)}:T0;function DE(e){setTimeout(function(){throw e})}function ii(e){return e==="head"}function My(e,t){var n=t,a=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n==="/$"||n==="/&"){if(a===0){e.removeChild(i),$l(t);return}a--}else if(n==="$"||n==="$?"||n==="$~"||n==="$!"||n==="&")a++;else if(n==="html")ls(e.ownerDocument.documentElement);else if(n==="head"){n=e.ownerDocument.head,ls(n);for(var l=n.firstChild;l;){var r=l.nextSibling,s=l.nodeName;l[Es]||s==="SCRIPT"||s==="STYLE"||s==="LINK"&&l.rel.toLowerCase()==="stylesheet"||n.removeChild(l),l=r}}else n==="body"&&ls(e.ownerDocument.body);n=i}while(n);$l(t)}function zy(e,t){var n=e;e=0;do{var a=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",n.getAttribute("style")===""&&n.removeAttribute("style")):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),a&&a.nodeType===8)if(n=a.data,n==="/$"){if(e===0)break;e--}else n!=="$"&&n!=="$?"&&n!=="$~"&&n!=="$!"||e++;n=a}while(n)}function Qd(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":Qd(n),ap(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(n.rel.toLowerCase()==="stylesheet")continue}e.removeChild(n)}}function ME(e,t,n,a){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(a){if(!e[Es])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(l=e.getAttribute("rel"),l==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(l!==i.rel||e.getAttribute("href")!==(i.href==null||i.href===""?null:i.href)||e.getAttribute("crossorigin")!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute("title")!==(i.title==null?null:i.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(l=e.getAttribute("src"),(l!==(i.src==null?null:i.src)||e.getAttribute("type")!==(i.type==null?null:i.type)||e.getAttribute("crossorigin")!==(i.crossOrigin==null?null:i.crossOrigin))&&l&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var l=i.name==null?null:""+i.name;if(i.type==="hidden"&&e.getAttribute("name")===l)return e}else return e;if(e=mn(e.nextSibling),e===null)break}return null}function zE(e,t,n){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=mn(e.nextSibling),e===null))return null;return e}function x0(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=mn(e.nextSibling),e===null))return null;return e}function $d(e){return e.data==="$?"||e.data==="$~"}function Zd(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function LE(e,t){var n=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||n.readyState!=="loading")t();else{var a=function(){t(),n.removeEventListener("DOMContentLoaded",a)};n.addEventListener("DOMContentLoaded",a),e._reactRetry=a}}function mn(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var Fd=null;function Ly(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"||n==="/&"){if(t===0)return mn(e.nextSibling);t--}else n!=="$"&&n!=="$!"&&n!=="$?"&&n!=="$~"&&n!=="&"||t++}e=e.nextSibling}return null}function By(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"){if(t===0)return e;t--}else n!=="/$"&&n!=="/&"||t++}e=e.previousSibling}return null}function k0(e,t,n){switch(t=Ou(n),e){case"html":if(e=t.documentElement,!e)throw Error(A(452));return e;case"head":if(e=t.head,!e)throw Error(A(453));return e;case"body":if(e=t.body,!e)throw Error(A(454));return e;default:throw Error(A(451))}}function ls(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);ap(e)}var gn=new Map,Uy=new Set;function Cu(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var ka=de.d;de.d={f:BE,r:UE,D:HE,C:qE,L:jE,m:VE,X:YE,S:GE,M:KE};function BE(){var e=ka.f(),t=$u();return e||t}function UE(e){var t=Fl(e);t!==null&&t.tag===5&&t.type==="form"?gv(t):ka.r(e)}var Wl=typeof document>"u"?null:document;function E0(e,t,n){var a=Wl;if(a&&typeof t=="string"&&t){var i=fn(t);i='link[rel="'+e+'"][href="'+i+'"]',typeof n=="string"&&(i+='[crossorigin="'+n+'"]'),Uy.has(i)||(Uy.add(i),e={rel:e,crossOrigin:n,href:t},a.querySelector(i)===null&&(t=a.createElement("link"),gt(t,"link",e),ot(t),a.head.appendChild(t)))}}function HE(e){ka.D(e),E0("dns-prefetch",e,null)}function qE(e,t){ka.C(e,t),E0("preconnect",e,t)}function jE(e,t,n){ka.L(e,t,n);var a=Wl;if(a&&e&&t){var i='link[rel="preload"][as="'+fn(t)+'"]';t==="image"&&n&&n.imageSrcSet?(i+='[imagesrcset="'+fn(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(i+='[imagesizes="'+fn(n.imageSizes)+'"]')):i+='[href="'+fn(e)+'"]';var l=i;switch(t){case"style":l=Ql(e);break;case"script":l=er(e)}gn.has(l)||(e=ze({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),gn.set(l,e),a.querySelector(i)!==null||t==="style"&&a.querySelector(Cs(l))||t==="script"&&a.querySelector(_s(l))||(t=a.createElement("link"),gt(t,"link",e),ot(t),a.head.appendChild(t)))}}function VE(e,t){ka.m(e,t);var n=Wl;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+fn(a)+'"][href="'+fn(e)+'"]',l=i;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":l=er(e)}if(!gn.has(l)&&(e=ze({rel:"modulepreload",href:e},t),gn.set(l,e),n.querySelector(i)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(_s(l)))return}a=n.createElement("link"),gt(a,"link",e),ot(a),n.head.appendChild(a)}}}function GE(e,t,n){ka.S(e,t,n);var a=Wl;if(a&&e){var i=Cl(a).hoistableStyles,l=Ql(e);t=t||"default";var r=i.get(l);if(!r){var s={loading:0,preload:null};if(r=a.querySelector(Cs(l)))s.loading=5;else{e=ze({rel:"stylesheet",href:e,"data-precedence":t},n),(n=gn.get(l))&&Gp(e,n);var o=r=a.createElement("link");ot(o),gt(o,"link",e),o._p=new Promise(function(u,c){o.onload=u,o.onerror=c}),o.addEventListener("load",function(){s.loading|=1}),o.addEventListener("error",function(){s.loading|=2}),s.loading|=4,nu(r,t,a)}r={type:"stylesheet",instance:r,count:1,state:s},i.set(l,r)}}}function YE(e,t){ka.X(e,t);var n=Wl;if(n&&e){var a=Cl(n).hoistableScripts,i=er(e),l=a.get(i);l||(l=n.querySelector(_s(i)),l||(e=ze({src:e,async:!0},t),(t=gn.get(i))&&Yp(e,t),l=n.createElement("script"),ot(l),gt(l,"link",e),n.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},a.set(i,l))}}function KE(e,t){ka.M(e,t);var n=Wl;if(n&&e){var a=Cl(n).hoistableScripts,i=er(e),l=a.get(i);l||(l=n.querySelector(_s(i)),l||(e=ze({src:e,async:!0,type:"module"},t),(t=gn.get(i))&&Yp(e,t),l=n.createElement("script"),ot(l),gt(l,"link",e),n.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},a.set(i,l))}}function Hy(e,t,n,a){var i=(i=Ka.current)?Cu(i):null;if(!i)throw Error(A(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=Ql(n.href),n=Cl(i).hoistableStyles,a=n.get(t),a||(a={type:"style",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=Ql(n.href);var l=Cl(i).hoistableStyles,r=l.get(e);if(r||(i=i.ownerDocument||i,r={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},l.set(e,r),(l=i.querySelector(Cs(e)))&&!l._p&&(r.instance=l,r.state.loading=5),gn.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},gn.set(e,n),l||XE(i,e,n,r.state))),t&&a===null)throw Error(A(528,""));return r}if(t&&a!==null)throw Error(A(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=er(n),n=Cl(i).hoistableScripts,a=n.get(t),a||(a={type:"script",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(A(444,e))}}function Ql(e){return'href="'+fn(e)+'"'}function Cs(e){return'link[rel="stylesheet"]['+e+"]"}function w0(e){return ze({},e,{"data-precedence":e.precedence,precedence:null})}function XE(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),gt(t,"link",n),ot(t),e.head.appendChild(t))}function er(e){return'[src="'+fn(e)+'"]'}function _s(e){return"script[async]"+e}function qy(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+fn(n.href)+'"]');if(a)return t.instance=a,ot(a),a;var i=ze({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),ot(a),gt(a,"style",i),nu(a,n.precedence,e),t.instance=a;case"stylesheet":i=Ql(n.href);var l=e.querySelector(Cs(i));if(l)return t.state.loading|=4,t.instance=l,ot(l),l;a=w0(n),(i=gn.get(i))&&Gp(a,i),l=(e.ownerDocument||e).createElement("link"),ot(l);var r=l;return r._p=new Promise(function(s,o){r.onload=s,r.onerror=o}),gt(l,"link",a),t.state.loading|=4,nu(l,n.precedence,e),t.instance=l;case"script":return l=er(n.src),(i=e.querySelector(_s(l)))?(t.instance=i,ot(i),i):(a=n,(i=gn.get(l))&&(a=ze({},n),Yp(a,i)),e=e.ownerDocument||e,i=e.createElement("script"),ot(i),gt(i,"link",a),e.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(A(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,nu(a,n.precedence,e));return t.instance}function nu(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=a.length?a[a.length-1]:null,l=i,r=0;r<a.length;r++){var s=a[r];if(s.dataset.precedence===t)l=s;else if(l!==i)break}l?l.parentNode.insertBefore(e,l.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Gp(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function Yp(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var au=null;function jy(e,t,n){if(au===null){var a=new Map,i=au=new Map;i.set(n,a)}else i=au,a=i.get(n),a||(a=new Map,i.set(n,a));if(a.has(e))return a;for(a.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var l=n[i];if(!(l[Es]||l[pt]||e==="link"&&l.getAttribute("rel")==="stylesheet")&&l.namespaceURI!=="http://www.w3.org/2000/svg"){var r=l.getAttribute(t)||"";r=e+r;var s=a.get(r);s?s.push(l):a.set(r,[l])}}return a}function Vy(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t==="title"?e.querySelector("head > title"):null)}function QE(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function A0(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function $E(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var i=Ql(a.href),l=t.querySelector(Cs(i));if(l){t=l._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=_u.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=l,ot(l);return}l=t.ownerDocument||t,a=w0(a),(i=gn.get(i))&&Gp(a,i),l=l.createElement("link"),ot(l);var r=l;r._p=new Promise(function(s,o){r.onload=s,r.onerror=o}),gt(l,"link",a),n.instance=l}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=_u.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var nd=0;function ZE(e,t){return e.stylesheets&&e.count===0&&iu(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var a=setTimeout(function(){if(e.stylesheets&&iu(e,e.stylesheets),e.unsuspend){var l=e.unsuspend;e.unsuspend=null,l()}},6e4+t);0<e.imgBytes&&nd===0&&(nd=62500*RE());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&iu(e,e.stylesheets),e.unsuspend)){var l=e.unsuspend;e.unsuspend=null,l()}},(e.imgBytes>nd?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(i)}}:null}function _u(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)iu(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Du=null;function iu(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Du=new Map,t.forEach(FE,e),Du=null,_u.call(e))}function FE(e,t){if(!(t.state.loading&4)){var n=Du.get(e);if(n)var a=n.get(null);else{n=new Map,Du.set(e,n);for(var i=e.querySelectorAll("link[data-precedence],style[data-precedence]"),l=0;l<i.length;l++){var r=i[l];(r.nodeName==="LINK"||r.getAttribute("media")!=="not all")&&(n.set(r.dataset.precedence,r),a=r)}a&&n.set(null,a)}i=t.instance,r=i.getAttribute("data-precedence"),l=n.get(r)||a,l===a&&n.set(null,i),n.set(r,i),this.count++,a=_u.bind(this),i.addEventListener("load",a),i.addEventListener("error",a),l?l.parentNode.insertBefore(i,l.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var ys={$$typeof:da,Provider:null,Consumer:null,_currentValue:Ei,_currentValue2:Ei,_threadCount:0};function JE(e,t,n,a,i,l,r,s,o){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Rf(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Rf(0),this.hiddenUpdates=Rf(null),this.identifierPrefix=a,this.onUncaughtError=i,this.onCaughtError=l,this.onRecoverableError=r,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=o,this.incompleteTransitions=new Map}function N0(e,t,n,a,i,l,r,s,o,u,c,f){return e=new JE(e,t,n,r,o,u,c,f,s),t=1,l===!0&&(t|=24),l=Xt(3,null,null,t),e.current=l,l.stateNode=e,t=mp(),t.refCount++,e.pooledCache=t,t.refCount++,l.memoizedState={element:a,isDehydrated:n,cache:t},bp(l),e}function R0(e){return e?(e=Al,e):Al}function O0(e,t,n,a,i,l){i=R0(i),a.context===null?a.context=i:a.pendingContext=i,a=Qa(t),a.payload={element:n},l=l===void 0?null:l,l!==null&&(a.callback=l),n=$a(e,a,t),n!==null&&(Bt(n,e,t),Ir(n,e,t))}function Gy(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function Kp(e,t){Gy(e,t),(e=e.alternate)&&Gy(e,t)}function C0(e){if(e.tag===13||e.tag===31){var t=Ui(e,67108864);t!==null&&Bt(t,e,67108864),Kp(e,67108864)}}function Yy(e){if(e.tag===13||e.tag===31){var t=Jt();t=tp(t);var n=Ui(e,t);n!==null&&Bt(n,e,t),Kp(e,t)}}var Mu=!0;function IE(e,t,n,a){var i=Z.T;Z.T=null;var l=de.p;try{de.p=2,Xp(e,t,n,a)}finally{de.p=l,Z.T=i}}function PE(e,t,n,a){var i=Z.T;Z.T=null;var l=de.p;try{de.p=8,Xp(e,t,n,a)}finally{de.p=l,Z.T=i}}function Xp(e,t,n,a){if(Mu){var i=Jd(a);if(i===null)ed(e,t,a,zu,n),Ky(e,a);else if(ew(i,e,t,n,a))a.stopPropagation();else if(Ky(e,a),t&4&&-1<WE.indexOf(e)){for(;i!==null;){var l=Fl(i);if(l!==null)switch(l.tag){case 3:if(l=l.stateNode,l.current.memoizedState.isDehydrated){var r=Ti(l.pendingLanes);if(r!==0){var s=l;for(s.pendingLanes|=2,s.entangledLanes|=2;r;){var o=1<<31-Ft(r);s.entanglements[1]|=o,r&=~o}Gn(l),(fe&6)===0&&(ku=$t()+500,Os(0,!1))}}break;case 31:case 13:s=Ui(l,2),s!==null&&Bt(s,l,2),$u(),Kp(l,2)}if(l=Jd(a),l===null&&ed(e,t,a,zu,n),l===i)break;i=l}i!==null&&a.stopPropagation()}else ed(e,t,a,null,n)}}function Jd(e){return e=lp(e),Qp(e)}var zu=null;function Qp(e){if(zu=null,e=Sl(e),e!==null){var t=Ss(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=Jy(t),e!==null)return e;e=null}else if(n===31){if(e=Iy(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return zu=e,null}function _0(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(jx()){case tb:return 2;case nb:return 8;case uu:case Vx:return 32;case ab:return 268435456;default:return 32}default:return 32}}var Id=!1,Ja=null,Ia=null,Pa=null,bs=new Map,vs=new Map,Ha=[],WE="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Ky(e,t){switch(e){case"focusin":case"focusout":Ja=null;break;case"dragenter":case"dragleave":Ia=null;break;case"mouseover":case"mouseout":Pa=null;break;case"pointerover":case"pointerout":bs.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":vs.delete(t.pointerId)}}function jr(e,t,n,a,i,l){return e===null||e.nativeEvent!==l?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:l,targetContainers:[i]},t!==null&&(t=Fl(t),t!==null&&C0(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function ew(e,t,n,a,i){switch(t){case"focusin":return Ja=jr(Ja,e,t,n,a,i),!0;case"dragenter":return Ia=jr(Ia,e,t,n,a,i),!0;case"mouseover":return Pa=jr(Pa,e,t,n,a,i),!0;case"pointerover":var l=i.pointerId;return bs.set(l,jr(bs.get(l)||null,e,t,n,a,i)),!0;case"gotpointercapture":return l=i.pointerId,vs.set(l,jr(vs.get(l)||null,e,t,n,a,i)),!0}return!1}function D0(e){var t=Sl(e.target);if(t!==null){var n=Ss(t);if(n!==null){if(t=n.tag,t===13){if(t=Jy(n),t!==null){e.blockedOn=t,Ng(e.priority,function(){Yy(n)});return}}else if(t===31){if(t=Iy(n),t!==null){e.blockedOn=t,Ng(e.priority,function(){Yy(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function lu(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=Jd(e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n);md=a,n.target.dispatchEvent(a),md=null}else return t=Fl(n),t!==null&&C0(t),e.blockedOn=n,!1;t.shift()}return!0}function Xy(e,t,n){lu(e)&&n.delete(t)}function tw(){Id=!1,Ja!==null&&lu(Ja)&&(Ja=null),Ia!==null&&lu(Ia)&&(Ia=null),Pa!==null&&lu(Pa)&&(Pa=null),bs.forEach(Xy),vs.forEach(Xy)}function Yo(e,t){e.blockedOn===t&&(e.blockedOn=null,Id||(Id=!0,at.unstable_scheduleCallback(at.unstable_NormalPriority,tw)))}var Ko=null;function Qy(e){Ko!==e&&(Ko=e,at.unstable_scheduleCallback(at.unstable_NormalPriority,function(){Ko===e&&(Ko=null);for(var t=0;t<e.length;t+=3){var n=e[t],a=e[t+1],i=e[t+2];if(typeof a!="function"){if(Qp(a||n)===null)continue;break}var l=Fl(n);l!==null&&(e.splice(t,3),t-=3,_d(l,{pending:!0,data:i,method:n.method,action:a},a,i))}}))}function $l(e){function t(o){return Yo(o,e)}Ja!==null&&Yo(Ja,e),Ia!==null&&Yo(Ia,e),Pa!==null&&Yo(Pa,e),bs.forEach(t),vs.forEach(t);for(var n=0;n<Ha.length;n++){var a=Ha[n];a.blockedOn===e&&(a.blockedOn=null)}for(;0<Ha.length&&(n=Ha[0],n.blockedOn===null);)D0(n),n.blockedOn===null&&Ha.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(a=0;a<n.length;a+=3){var i=n[a],l=n[a+1],r=i[Ut]||null;if(typeof l=="function")r||Qy(n);else if(r){var s=null;if(l&&l.hasAttribute("formAction")){if(i=l,r=l[Ut]||null)s=r.formAction;else if(Qp(i)!==null)continue}else s=r.action;typeof s=="function"?n[a+1]=s:(n.splice(a,3),a-=3),Qy(n)}}}function M0(){function e(l){l.canIntercept&&l.info==="react-transition"&&l.intercept({handler:function(){return new Promise(function(r){return i=r})},focusReset:"manual",scroll:"manual"})}function t(){i!==null&&(i(),i=null),a||setTimeout(n,20)}function n(){if(!a&&!navigation.transition){var l=navigation.currentEntry;l&&l.url!=null&&navigation.navigate(l.url,{state:l.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var a=!1,i=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){a=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),i!==null&&(i(),i=null)}}}function $p(e){this._internalRoot=e}Ju.prototype.render=$p.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(A(409));var n=t.current,a=Jt();O0(n,a,e,t,null,null)};Ju.prototype.unmount=$p.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;O0(e.current,2,null,e,null,null),$u(),t[Zl]=null}};function Ju(e){this._internalRoot=e}Ju.prototype.unstable_scheduleHydration=function(e){if(e){var t=ob();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Ha.length&&t!==0&&t<Ha[n].priority;n++);Ha.splice(n,0,e),n===0&&D0(e)}};var $y=Zy.version;if($y!=="19.2.6")throw Error(A(527,$y,"19.2.6"));de.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(A(188)):(e=Object.keys(e).join(","),Error(A(268,e)));return e=Mx(t),e=e!==null?Py(e):null,e=e===null?null:e.stateNode,e};var nw={bundleType:0,version:"19.2.6",rendererPackageName:"react-dom",currentDispatcherRef:Z,reconcilerVersion:"19.2.6"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(Vr=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Vr.isDisabled&&Vr.supportsFiber))try{Ts=Vr.inject(nw),Zt=Vr}catch(e){}var Vr;Iu.createRoot=function(e,t){if(!Fy(e))throw Error(A(299));var n=!1,a="",i=Ev,l=wv,r=Av;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(i=t.onUncaughtError),t.onCaughtError!==void 0&&(l=t.onCaughtError),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=N0(e,1,!1,null,null,n,a,null,i,l,r,M0),e[Zl]=t.current,Vp(e),new $p(t)};Iu.hydrateRoot=function(e,t,n){if(!Fy(e))throw Error(A(299));var a=!1,i="",l=Ev,r=wv,s=Av,o=null;return n!=null&&(n.unstable_strictMode===!0&&(a=!0),n.identifierPrefix!==void 0&&(i=n.identifierPrefix),n.onUncaughtError!==void 0&&(l=n.onUncaughtError),n.onCaughtError!==void 0&&(r=n.onCaughtError),n.onRecoverableError!==void 0&&(s=n.onRecoverableError),n.formState!==void 0&&(o=n.formState)),t=N0(e,1,!0,t,n!=null?n:null,a,i,o,l,r,s,M0),t.context=R0(null),n=t.current,a=Jt(),a=tp(a),i=Qa(a),i.callback=null,$a(n,i,a),n=a,t.current.lanes=n,ks(t,n),Gn(t),e[Zl]=t.current,Vp(e),new Ju(t)};Iu.version="19.2.6"});var U0=Gt((WO,B0)=>{"use strict";function L0(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(L0)}catch(e){console.error(e)}}L0(),B0.exports=z0()});var US=Gt(yc=>{"use strict";var kw=Symbol.for("react.transitional.element"),Ew=Symbol.for("react.fragment");function BS(e,t,n){var a=null;if(n!==void 0&&(a=""+n),t.key!==void 0&&(a=""+t.key),"key"in t){n={};for(var i in t)i!=="key"&&(n[i]=t[i])}else n=t;return t=n.ref,{$$typeof:kw,type:e,key:a,ref:t!==void 0?t:null,props:n}}yc.Fragment=Ew;yc.jsx=BS;yc.jsxs=BS});var Le=Gt((pC,HS)=>{"use strict";HS.exports=US()});var F=e=>typeof e=="string",Tr=()=>{let e,t,n=new Promise((a,i)=>{e=a,t=i});return n.resolve=e,n.reject=t,n},Ih=e=>e==null?"":String(e),iT=(e,t,n)=>{e.forEach(a=>{t[a]&&(n[a]=t[a])})},lT=/###/g,Ph=e=>e&&e.includes("###")?e.replace(lT,"."):e,Wh=e=>!e||F(e),xr=(e,t,n)=>{let a=F(t)?t.split("."):t,i=0;for(;i<a.length-1;){if(Wh(e))return{};let l=Ph(a[i]);!e[l]&&n&&(e[l]=new n),Object.prototype.hasOwnProperty.call(e,l)?e=e[l]:e={},++i}return Wh(e)?{}:{obj:e,k:Ph(a[i])}},em=(e,t,n)=>{let{obj:a,k:i}=xr(e,t,Object);if(a!==void 0||t.length===1){a[i]=n;return}let l=t[t.length-1],r=t.slice(0,t.length-1),s=xr(e,r,Object);for(;s.obj===void 0&&r.length;)l="".concat(r[r.length-1],".").concat(l),r=r.slice(0,r.length-1),s=xr(e,r,Object),s!=null&&s.obj&&typeof s.obj["".concat(s.k,".").concat(l)]<"u"&&(s.obj=void 0);s.obj["".concat(s.k,".").concat(l)]=n},rT=(e,t,n,a)=>{let{obj:i,k:l}=xr(e,t,Object);i[l]=i[l]||[],i[l].push(n)},lo=(e,t)=>{let{obj:n,k:a}=xr(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,a))return n[a]},sT=(e,t,n)=>{let a=lo(e,n);return a!==void 0?a:lo(t,n)},rm=(e,t,n)=>{for(let a in t)a!=="__proto__"&&a!=="constructor"&&(a in e?F(e[a])||e[a]instanceof String||F(t[a])||t[a]instanceof String?n&&(e[a]=t[a]):rm(e[a],t[a],n):e[a]=t[a]);return e},na=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),oT={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},uT=e=>F(e)?e.replace(/[&<>"'\/]/g,t=>oT[t]):e,Kc=class{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){let n=this.regExpMap.get(t);if(n!==void 0)return n;let a=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,a),this.regExpQueue.push(t),a}},cT=[" ",",","?","!",";"],fT=new Kc(20),dT=(e,t,n)=>{t=t||"",n=n||"";let a=cT.filter(r=>!t.includes(r)&&!n.includes(r));if(a.length===0)return!0;let i=fT.getRegExp("(".concat(a.map(r=>r==="?"?"\\?":r).join("|"),")")),l=!i.test(e);if(!l){let r=e.indexOf(n);r>0&&!i.test(e.substring(0,r))&&(l=!0)}return l},Xc=(e,t,n=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let a=t.split(n),i=e;for(let l=0;l<a.length;){if(!i||typeof i!="object")return;let r,s="";for(let o=l;o<a.length;++o)if(o!==l&&(s+=n),s+=a[o],r=i[s],r!==void 0){if(["string","number","boolean"].includes(typeof r)&&o<a.length-1)continue;l+=o-l+1;break}i=r}return i},kr=e=>e==null?void 0:e.replace(/_/g,"-"),pT={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var n,a;(a=(n=console==null?void 0:console[e])==null?void 0:n.apply)==null||a.call(n,console,t)}},Qc=class e{constructor(t,n={}){this.init(t,n)}init(t,n={}){this.prefix=n.prefix||"i18next:",this.logger=t||pT,this.options=n,this.debug=n.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,n,a,i){return i&&!this.debug?null:(t=t.map(l=>F(l)?l.replace(/[\r\n\x00-\x1F\x7F]/g," "):l),F(t[0])&&(t[0]="".concat(a).concat(this.prefix," ").concat(t[0])),this.logger[n](t))}create(t){return new e(this.logger,T({prefix:"".concat(this.prefix,":").concat(t,":")},this.options))}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},zn=new Qc,al=class{constructor(){this.observers={}}on(t,n){return t.split(" ").forEach(a=>{this.observers[a]||(this.observers[a]=new Map);let i=this.observers[a].get(n)||0;this.observers[a].set(n,i+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}once(t,n){let a=(...i)=>{n(...i),this.off(t,a)};return this.on(t,a),this}emit(t,...n){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([i,l])=>{for(let r=0;r<l;r++)i(...n)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([i,l])=>{for(let r=0;r<l;r++)i(t,...n)})}},ro=class extends al{constructor(t,n={ns:["translation"],defaultNS:"translation"}){super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.includes(t)||this.options.ns.push(t)}removeNamespaces(t){let n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,a,i={}){var u,c;let l=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,r=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure,s;t.includes(".")?s=t.split("."):(s=[t,n],a&&(Array.isArray(a)?s.push(...a):F(a)&&l?s.push(...a.split(l)):s.push(a)));let o=lo(this.data,s);return!o&&!n&&!a&&t.includes(".")&&(t=s[0],n=s[1],a=s.slice(2).join(".")),o||!r||!F(a)?o:Xc((c=(u=this.data)==null?void 0:u[t])==null?void 0:c[n],a,l)}addResource(t,n,a,i,l={silent:!1}){let r=l.keySeparator!==void 0?l.keySeparator:this.options.keySeparator,s=[t,n];a&&(s=s.concat(r?a.split(r):a)),t.includes(".")&&(s=t.split("."),i=n,n=s[1]),this.addNamespaces(n),em(this.data,s,i),l.silent||this.emit("added",t,n,a,i)}addResources(t,n,a,i={silent:!1}){for(let l in a)(F(a[l])||Array.isArray(a[l]))&&this.addResource(t,n,l,a[l],{silent:!0});i.silent||this.emit("added",t,n,a)}addResourceBundle(t,n,a,i,l,r={silent:!1,skipCopy:!1}){let s=[t,n];t.includes(".")&&(s=t.split("."),i=a,a=n,n=s[1]),this.addNamespaces(n);let o=lo(this.data,s)||{};r.skipCopy||(a=JSON.parse(JSON.stringify(a))),i?rm(o,a,l):o=T(T({},o),a),em(this.data,s,o),r.silent||this.emit("added",t,n,a)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){let n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}},sm={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,a,i){return e.forEach(l=>{var r,s;t=(s=(r=this.processors[l])==null?void 0:r.process(t,n,a,i))!=null?s:t}),t}},om=Symbol("i18next/PATH_KEY");function hT(){let e=[],t=Object.create(null),n;return t.get=(a,i)=>{var l;return(l=n==null?void 0:n.revoke)==null||l.call(n),i===om?e:(e.push(i),n=Proxy.revocable(a,t),n.proxy)},Proxy.revocable(Object.create(null),t).proxy}function mi(e,t){var r,s;let{[om]:n}=e(hT()),a=(r=t==null?void 0:t.keySeparator)!=null?r:".",i=(s=t==null?void 0:t.nsSeparator)!=null?s:":",l=(t==null?void 0:t.enableSelector)==="strict";if(n.length>1&&i){let o=t==null?void 0:t.ns,u=l?Array.isArray(o)?o:o?[o]:null:Array.isArray(o)?o:null;if(u&&(l?u:u.length>1?u.slice(1):[]).includes(n[0]))return"".concat(n[0]).concat(i).concat(n.slice(1).join(a))}return n.join(a)}var Vc=e=>!F(e)&&typeof e!="boolean"&&typeof e!="number",so=class e extends al{constructor(t,n={}){super(),iT(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=zn.create("translator"),this.checkedLoadedFor={}}changeLanguage(t){t&&(this.language=t)}exists(t,n={interpolation:{}}){let a=T({},n);if(t==null)return!1;let i=this.resolve(t,a);if((i==null?void 0:i.res)===void 0)return!1;let l=Vc(i.res);return!(a.returnObjects===!1&&l)}extractFromKey(t,n){let a=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;a===void 0&&(a=":");let i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,l=n.ns||this.options.defaultNS||[],r=a&&t.includes(a),s=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!dT(t,a,i);if(r&&!s){let o=t.match(this.interpolator.nestingRegexp);if(o&&o.length>0)return{key:t,namespaces:F(l)?[l]:l};let u=t.split(a);(a!==i||a===i&&this.options.ns.includes(u[0]))&&(l=u.shift()),t=u.join(i)}return{key:t,namespaces:F(l)?[l]:l}}translate(t,n,a){let i=typeof n=="object"?T({},n):n;if(typeof i!="object"&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i=="object"&&(i=T({},i)),i||(i={}),t==null)return"";typeof t=="function"&&(t=mi(t,T(T({},this.options),i))),Array.isArray(t)||(t=[String(t)]),t=t.map(q=>typeof q=="function"?mi(q,T(T({},this.options),i)):String(q));let l=i.returnDetails!==void 0?i.returnDetails:this.options.returnDetails,r=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,{key:s,namespaces:o}=this.extractFromKey(t[t.length-1],i),u=o[o.length-1],c=i.nsSeparator!==void 0?i.nsSeparator:this.options.nsSeparator;c===void 0&&(c=":");let f=i.lng||this.language,d=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((f==null?void 0:f.toLowerCase())==="cimode")return d?l?{res:"".concat(u).concat(c).concat(s),usedKey:s,exactUsedKey:s,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(i)}:"".concat(u).concat(c).concat(s):l?{res:s,usedKey:s,exactUsedKey:s,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(i)}:s;let h=this.resolve(t,i),b=h==null?void 0:h.res,v=(h==null?void 0:h.usedKey)||s,E=(h==null?void 0:h.exactUsedKey)||s,m=["[object Number]","[object Function]","[object RegExp]"],p=i.joinArrays!==void 0?i.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,S=i.count!==void 0&&!F(i.count),x=e.hasDefaultValue(i),R=S?this.pluralResolver.getSuffix(f,i.count,i):"",N=i.ordinal&&S?this.pluralResolver.getSuffix(f,i.count,{ordinal:!1}):"",z=S&&!i.ordinal&&i.count===0,D=z&&i["defaultValue".concat(this.options.pluralSeparator,"zero")]||i["defaultValue".concat(R)]||i["defaultValue".concat(N)]||i.defaultValue,L=b;y&&!b&&x&&(L=D);let oe=Vc(L),K=Object.prototype.toString.apply(L);if(y&&L&&oe&&!m.includes(K)&&!(F(p)&&Array.isArray(L))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");let q=this.options.returnedObjectHandler?this.options.returnedObjectHandler(v,L,B(T({},i),{ns:o})):"key '".concat(s," (").concat(this.language,")' returned an object instead of string.");return l?(h.res=q,h.usedParams=this.getUsedParamsDetails(i),h):q}if(r){let q=Array.isArray(L),O=q?[]:{},X=q?E:v;for(let I in L)if(Object.prototype.hasOwnProperty.call(L,I)){let ge="".concat(X).concat(r).concat(I);x&&!b?O[I]=this.translate(ge,B(T({},i),{defaultValue:Vc(D)?D[I]:void 0,joinArrays:!1,ns:o})):O[I]=this.translate(ge,B(T({},i),{joinArrays:!1,ns:o})),O[I]===ge&&(O[I]=L[I])}b=O}}else if(y&&F(p)&&Array.isArray(b))b=b.join(p),b&&(b=this.extendTranslation(b,t,i,a));else{let q=!1,O=!1;!this.isValidLookup(b)&&x&&(q=!0,b=D),this.isValidLookup(b)||(O=!0,b=s);let I=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&O?void 0:b,ge=x&&D!==b&&this.options.updateMissing;if(O||q||ge){if(this.logger.log(ge?"updateKey":"missingKey",f,u,S&&!ge?"".concat(s).concat(this.pluralResolver.getSuffix(f,i.count,i)):s,ge?D:b),r){let Se=this.resolve(s,B(T({},i),{keySeparator:!1}));Se&&Se.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let Ae=[],et=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo==="fallback"&&et&&et[0])for(let Se=0;Se<et.length;Se++)Ae.push(et[Se]);else this.options.saveMissingTo==="all"?Ae=this.languageUtils.toResolveHierarchy(i.lng||this.language):Ae.push(i.lng||this.language);let ce=(Se,tt,Ge)=>{var Cn;let Te=x&&Ge!==b?Ge:I;this.options.missingKeyHandler?this.options.missingKeyHandler(Se,u,tt,Te,ge,i):(Cn=this.backendConnector)!=null&&Cn.saveMissing&&this.backendConnector.saveMissing(Se,u,tt,Te,ge,i),this.emit("missingKey",Se,u,tt,b)};this.options.saveMissing&&(this.options.saveMissingPlurals&&S?Ae.forEach(Se=>{let tt=this.pluralResolver.getSuffixes(Se,i);z&&i["defaultValue".concat(this.options.pluralSeparator,"zero")]&&!tt.includes("".concat(this.options.pluralSeparator,"zero"))&&tt.push("".concat(this.options.pluralSeparator,"zero")),tt.forEach(Ge=>{ce([Se],s+Ge,i["defaultValue".concat(Ge)]||D)})}):ce(Ae,s,D))}b=this.extendTranslation(b,t,i,h,a),O&&b===s&&this.options.appendNamespaceToMissingKey&&(b="".concat(u).concat(c).concat(s)),(O||q)&&this.options.parseMissingKeyHandler&&(b=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?"".concat(u).concat(c).concat(s):s,q?b:void 0,i))}return l?(h.res=b,h.usedParams=this.getUsedParamsDetails(i),h):b}extendTranslation(t,n,a,i,l){var o,u;if((o=this.i18nFormat)!=null&&o.parse)t=this.i18nFormat.parse(t,T(T({},this.options.interpolation.defaultVariables),a),a.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!a.skipInterpolation){a.interpolation&&this.interpolator.init(B(T({},a),{interpolation:T(T({},this.options.interpolation),a.interpolation)}));let c=F(t)&&(((u=a==null?void 0:a.interpolation)==null?void 0:u.skipOnVariables)!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables),f;if(c){let h=t.match(this.interpolator.nestingRegexp);f=h&&h.length}let d=a.replace&&!F(a.replace)?a.replace:a;if(this.options.interpolation.defaultVariables&&(d=T(T({},this.options.interpolation.defaultVariables),d)),t=this.interpolator.interpolate(t,d,a.lng||this.language||i.usedLng,a),c){let h=t.match(this.interpolator.nestingRegexp),b=h&&h.length;f<b&&(a.nest=!1)}!a.lng&&i&&i.res&&(a.lng=this.language||i.usedLng),a.nest!==!1&&(t=this.interpolator.nest(t,(...h)=>(l==null?void 0:l[0])===h[0]&&!a.context?(this.logger.warn("It seems you are nesting recursively key: ".concat(h[0]," in key: ").concat(n[0])),null):this.translate(...h,n),a)),a.interpolation&&this.interpolator.reset()}let r=a.postProcess||this.options.postProcess,s=F(r)?[r]:r;return t!=null&&(s!=null&&s.length)&&a.applyPostProcessor!==!1&&(t=sm.handle(s,t,n,this.options&&this.options.postProcessPassResolved?T({i18nResolved:B(T({},i),{usedParams:this.getUsedParamsDetails(a)})},a):a,this)),t}resolve(t,n={}){let a,i,l,r,s;return F(t)&&(t=[t]),Array.isArray(t)&&(t=t.map(o=>typeof o=="function"?mi(o,T(T({},this.options),n)):o)),t.forEach(o=>{if(this.isValidLookup(a))return;let u=this.extractFromKey(o,n),c=u.key;i=c;let f=u.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));let d=n.count!==void 0&&!F(n.count),h=d&&!n.ordinal&&n.count===0,b=n.context!==void 0&&(F(n.context)||typeof n.context=="number")&&n.context!=="",v=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(E=>{var m,p;this.isValidLookup(a)||(s=E,!this.checkedLoadedFor["".concat(v[0],"-").concat(E)]&&((m=this.utils)!=null&&m.hasLoadedNamespace)&&!((p=this.utils)!=null&&p.hasLoadedNamespace(s))&&(this.checkedLoadedFor["".concat(v[0],"-").concat(E)]=!0,this.logger.warn('key "'.concat(i,'" for languages "').concat(v.join(", "),'" won\'t get resolved as namespace "').concat(s,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),v.forEach(y=>{var R;if(this.isValidLookup(a))return;r=y;let S=[c];if((R=this.i18nFormat)!=null&&R.addLookupKeys)this.i18nFormat.addLookupKeys(S,c,y,E,n);else{let N;d&&(N=this.pluralResolver.getSuffix(y,n.count,n));let z="".concat(this.options.pluralSeparator,"zero"),D="".concat(this.options.pluralSeparator,"ordinal").concat(this.options.pluralSeparator);if(d&&(n.ordinal&&N.startsWith(D)&&S.push(c+N.replace(D,this.options.pluralSeparator)),S.push(c+N),h&&S.push(c+z)),b){let L="".concat(c).concat(this.options.contextSeparator||"_").concat(n.context);S.push(L),d&&(n.ordinal&&N.startsWith(D)&&S.push(L+N.replace(D,this.options.pluralSeparator)),S.push(L+N),h&&S.push(L+z))}}let x;for(;x=S.pop();)this.isValidLookup(a)||(l=x,a=this.getResource(y,E,x,n))}))})}),{res:a,usedKey:i,exactUsedKey:l,usedLng:r,usedNS:s}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,a,i={}){var l;return(l=this.i18nFormat)!=null&&l.getResource?this.i18nFormat.getResource(t,n,a,i):this.resourceStore.getResource(t,n,a,i)}getUsedParamsDetails(t={}){let n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],a=t.replace&&!F(t.replace),i=a?t.replace:t;if(a&&typeof t.count<"u"&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i=T(T({},this.options.interpolation.defaultVariables),i)),!a){i=T({},i);for(let l of n)delete i[l]}return i}static hasDefaultValue(t){let n="defaultValue";for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a)&&a.startsWith(n)&&t[a]!==void 0)return!0;return!1}},oo=class{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=zn.create("languageUtils")}getScriptPartFromCode(t){if(t=kr(t),!t||!t.includes("-"))return null;let n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=kr(t),!t||!t.includes("-"))return t;let n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(F(t)&&t.includes("-")){let n;try{n=Intl.getCanonicalLocales(t)[0]}catch(a){}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(t)}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(a=>{if(n)return;let i=this.formatLanguageCode(a);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(a=>{if(n)return;let i=this.getScriptPartFromCode(a);if(this.isSupportedCode(i))return n=i;let l=this.getLanguagePartFromCode(a);if(this.isSupportedCode(l))return n=l;n=this.options.supportedLngs.find(r=>r===l?!0:!r.includes("-")&&!l.includes("-")?!1:!!(r.includes("-")&&!l.includes("-")&&r.slice(0,r.indexOf("-"))===l||r.startsWith(l)&&l.length>1))}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),F(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let a=t[n];return a||(a=t[this.getScriptPartFromCode(n)]),a||(a=t[this.formatLanguageCode(n)]),a||(a=t[this.getLanguagePartFromCode(n)]),a||(a=t.default),a||[]}toResolveHierarchy(t,n){let a=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],t),i=[],l=r=>{r&&(this.isSupportedCode(r)?i.push(r):this.logger.warn("rejecting language code not found in supportedLngs: ".concat(r)))};return F(t)&&(t.includes("-")||t.includes("_"))?(this.options.load!=="languageOnly"&&l(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&l(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&l(this.getLanguagePartFromCode(t))):F(t)&&l(this.formatLanguageCode(t)),a.forEach(r=>{i.includes(r)||l(this.formatLanguageCode(r))}),i}},tm={zero:0,one:1,two:2,few:3,many:4,other:5},nm={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})},$c=class{constructor(t,n={}){this.languageUtils=t,this.options=n,this.logger=zn.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,n={}){let a=kr(t==="dev"?"en":t),i=n.ordinal?"ordinal":"cardinal",l=JSON.stringify({cleanedCode:a,type:i});if(l in this.pluralRulesCache)return this.pluralRulesCache[l];let r;try{r=new Intl.PluralRules(a,{type:i})}catch(s){if(typeof Intl>"u")return this.logger.error("No Intl support, please use an Intl polyfill!"),nm;if(!t.match(/-|_/))return nm;let o=this.languageUtils.getLanguagePartFromCode(t);r=this.getRule(o,n)}return this.pluralRulesCache[l]=r,r}needsPlural(t,n={}){let a=this.getRule(t,n);return a||(a=this.getRule("dev",n)),(a==null?void 0:a.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,n,a={}){return this.getSuffixes(t,a).map(i=>"".concat(n).concat(i))}getSuffixes(t,n={}){let a=this.getRule(t,n);return a||(a=this.getRule("dev",n)),a?a.resolvedOptions().pluralCategories.sort((i,l)=>tm[i]-tm[l]).map(i=>"".concat(this.options.prepend).concat(n.ordinal?"ordinal".concat(this.options.prepend):"").concat(i)):[]}getSuffix(t,n,a={}){let i=this.getRule(t,a);return i?"".concat(this.options.prepend).concat(a.ordinal?"ordinal".concat(this.options.prepend):"").concat(i.select(n)):(this.logger.warn("no plural rule found for: ".concat(t)),this.getSuffix("dev",n,a))}},am=(e,t,n,a=".",i=!0)=>{let l=sT(e,t,n);return!l&&i&&F(n)&&(l=Xc(e,n,a),l===void 0&&(l=Xc(t,n,a))),l},Gc=e=>e.replace(/\$/g,"$$$$"),uo=class{constructor(t={}){var n;this.logger=zn.create("interpolator"),this.options=t,this.format=((n=t==null?void 0:t.interpolation)==null?void 0:n.format)||(a=>a),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});let{escape:n,escapeValue:a,useRawValueToEscape:i,prefix:l,prefixEscaped:r,suffix:s,suffixEscaped:o,formatSeparator:u,unescapeSuffix:c,unescapePrefix:f,nestingPrefix:d,nestingPrefixEscaped:h,nestingSuffix:b,nestingSuffixEscaped:v,nestingOptionsSeparator:E,maxReplaces:m,alwaysFormat:p}=t.interpolation;this.escape=n!==void 0?n:uT,this.escapeValue=a!==void 0?a:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=l?na(l):r||"{{",this.suffix=s?na(s):o||"}}",this.formatSeparator=u||",",this.unescapePrefix=c?"":f?na(f):"-",this.unescapeSuffix=this.unescapePrefix?"":c?na(c):"",this.nestingPrefix=d?na(d):h||na("$t("),this.nestingSuffix=b?na(b):v||na(")"),this.nestingOptionsSeparator=E||",",this.maxReplaces=m||1e3,this.alwaysFormat=p!==void 0?p:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let t=(n,a)=>(n==null?void 0:n.source)===a?(n.lastIndex=0,n):new RegExp(a,"g");this.regexp=t(this.regexp,"".concat(this.prefix,"(.+?)").concat(this.suffix)),this.regexpUnescape=t(this.regexpUnescape,"".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix)),this.nestingRegexp=t(this.nestingRegexp,"".concat(this.nestingPrefix,"((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\))*?)").concat(this.nestingSuffix))}interpolate(t,n,a,i){var h;let l,r,s,o=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=b=>{if(!b.includes(this.formatSeparator)){let p=am(n,o,b,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(p,void 0,a,B(T(T({},i),n),{interpolationkey:b})):p}let v=b.split(this.formatSeparator),E=v.shift().trim(),m=v.join(this.formatSeparator).trim();return this.format(am(n,o,E,this.options.keySeparator,this.options.ignoreJSONStructure),m,a,B(T(T({},i),n),{interpolationkey:E}))};this.resetRegExp(),!this.escapeValue&&typeof t=="string"&&/\$t\([^)]*\{[^}]*\{\{/.test(t)&&this.logger.warn("nesting options string contains interpolated variables with escapeValue: false \u2014 if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.");let c=(i==null?void 0:i.missingInterpolationHandler)||this.options.missingInterpolationHandler,f=((h=i==null?void 0:i.interpolation)==null?void 0:h.skipOnVariables)!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:b=>Gc(b)},{regex:this.regexp,safeValue:b=>this.escapeValue?Gc(this.escape(b)):Gc(b)}].forEach(b=>{for(s=0;l=b.regex.exec(t);){let v=l[1].trim();if(r=u(v),r===void 0)if(typeof c=="function"){let m=c(t,l,i);r=F(m)?m:""}else if(i&&Object.prototype.hasOwnProperty.call(i,v))r="";else if(f){r=l[0];continue}else this.logger.warn("missed to pass in variable ".concat(v," for interpolating ").concat(t)),r="";else!F(r)&&!this.useRawValueToEscape&&(r=Ih(r));let E=b.safeValue(r);if(t=t.replace(l[0],E),f?(b.regex.lastIndex+=r.length,b.regex.lastIndex-=l[0].length):b.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),t}nest(t,n,a={}){let i,l,r,s=(o,u)=>{var v,E;let c=this.nestingOptionsSeparator;if(!o.includes(c))return o;let f=o.split(new RegExp("".concat(na(c),"[ ]*{"))),d="{".concat(f[1]);o=f[0],d=this.interpolate(d,r);let h=d.match(/'/g),b=d.match(/"/g);(((v=h==null?void 0:h.length)!=null?v:0)%2===0&&!b||((E=b==null?void 0:b.length)!=null?E:0)%2!==0)&&(d=d.replace(/'/g,'"'));try{r=JSON.parse(d),u&&(r=T(T({},u),r))}catch(m){return this.logger.warn("failed parsing options string in nesting for key ".concat(o),m),"".concat(o).concat(c).concat(d)}return r.defaultValue&&r.defaultValue.includes(this.prefix)&&delete r.defaultValue,o};for(;i=this.nestingRegexp.exec(t);){let o=[];r=T({},a),r=r.replace&&!F(r.replace)?r.replace:r,r.applyPostProcessor=!1,delete r.defaultValue;let u=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(u!==-1&&(o=i[1].slice(u).split(this.formatSeparator).map(c=>c.trim()).filter(Boolean),i[1]=i[1].slice(0,u)),l=n(s.call(this,i[1].trim(),r),r),l&&i[0]===t&&!F(l))return l;F(l)||(l=Ih(l)),l||(this.logger.warn("missed to resolve ".concat(i[1]," for nesting ").concat(t)),l=""),o.length&&(l=o.reduce((c,f)=>this.format(c,f,a.lng,B(T({},a),{interpolationkey:i[1].trim()})),l.trim())),t=t.replace(i[0],l),this.regexp.lastIndex=0}return t}},mT=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes("(")){let a=e.split("(");t=a[0].toLowerCase().trim();let i=a[1].slice(0,-1);t==="currency"&&!i.includes(":")?n.currency||(n.currency=i.trim()):t==="relativetime"&&!i.includes(":")?n.range||(n.range=i.trim()):i.split(";").forEach(r=>{if(r){let[s,...o]=r.split(":"),u=o.join(":").trim().replace(/^'+|'+$/g,""),c=s.trim();n[c]||(n[c]=u),u==="false"&&(n[c]=!1),u==="true"&&(n[c]=!0),isNaN(u)||(n[c]=parseInt(u,10))}})}return{formatName:t,formatOptions:n}},im=e=>{let t={};return(n,a,i)=>{let l=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(l=B(T({},l),{[i.interpolationkey]:void 0}));let r=a+JSON.stringify(l),s=t[r];return s||(s=e(kr(a),i),t[r]=s),s(n)}},gT=e=>(t,n,a)=>e(kr(n),a)(t),Zc=class{constructor(t={}){this.logger=zn.create("formatter"),this.options=t,this.init(t)}init(t,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";let a=n.cacheInBuiltFormats?im:gT;this.formats={number:a((i,l)=>{let r=new Intl.NumberFormat(i,T({},l));return s=>r.format(s)}),currency:a((i,l)=>{let r=new Intl.NumberFormat(i,B(T({},l),{style:"currency"}));return s=>r.format(s)}),datetime:a((i,l)=>{let r=new Intl.DateTimeFormat(i,T({},l));return s=>r.format(s)}),relativetime:a((i,l)=>{let r=new Intl.RelativeTimeFormat(i,T({},l));return s=>r.format(s,l.range||"day")}),list:a((i,l)=>{let r=new Intl.ListFormat(i,T({},l));return s=>r.format(s)})}}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=im(n)}format(t,n,a,i={}){if(!n||t==null)return t;let l=n.split(this.formatSeparator);if(l.length>1&&l[0].indexOf("(")>1&&!l[0].includes(")")&&l.find(s=>s.includes(")"))){let s=l.findIndex(o=>o.includes(")"));l[0]=[l[0],...l.splice(1,s)].join(this.formatSeparator)}return l.reduce((s,o)=>{var f;let{formatName:u,formatOptions:c}=mT(o);if(this.formats[u]){let d=s;try{let h=((f=i==null?void 0:i.formatParams)==null?void 0:f[i.interpolationkey])||{},b=h.locale||h.lng||i.locale||i.lng||a;d=this.formats[u](s,b,T(T(T({},c),i),h))}catch(h){this.logger.warn(h)}return d}else this.logger.warn("there was no format function for ".concat(u));return s},t)}},yT=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},Fc=class extends al{constructor(t,n,a,i={}){var l,r;super(),this.backend=t,this.store=n,this.services=a,this.languageUtils=a.languageUtils,this.options=i,this.logger=zn.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],(r=(l=this.backend)==null?void 0:l.init)==null||r.call(l,a,i.backend,i)}queueLoad(t,n,a,i){let l={},r={},s={},o={};return t.forEach(u=>{let c=!0;n.forEach(f=>{let d="".concat(u,"|").concat(f);!a.reload&&this.store.hasResourceBundle(u,f)?this.state[d]=2:this.state[d]<0||(this.state[d]===1?r[d]===void 0&&(r[d]=!0):(this.state[d]=1,c=!1,r[d]===void 0&&(r[d]=!0),l[d]===void 0&&(l[d]=!0),o[f]===void 0&&(o[f]=!0)))}),c||(s[u]=!0)}),(Object.keys(l).length||Object.keys(r).length)&&this.queue.push({pending:r,pendingCount:Object.keys(r).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(l),pending:Object.keys(r),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(o)}}loaded(t,n,a){let i=t.split("|"),l=i[0],r=i[1];n&&this.emit("failedLoading",l,r,n),!n&&a&&this.store.addResourceBundle(l,r,a,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&a&&(this.state[t]=0);let s={};this.queue.forEach(o=>{rT(o.loaded,[l],r),yT(o,t),n&&o.errors.push(n),o.pendingCount===0&&!o.done&&(Object.keys(o.loaded).forEach(u=>{s[u]||(s[u]={});let c=o.loaded[u];c.length&&c.forEach(f=>{s[u][f]===void 0&&(s[u][f]=!0)})}),o.done=!0,o.errors.length?o.callback(o.errors):o.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(o=>!o.done)}read(t,n,a,i=0,l=this.retryTimeout,r){if(!t.length)return r(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:a,tried:i,wait:l,callback:r});return}this.readingCalls++;let s=(u,c)=>{if(this.readingCalls--,this.waitingReads.length>0){let f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(u&&c&&i<this.maxRetries){setTimeout(()=>{this.read(t,n,a,i+1,l*2,r)},l);return}r(u,c)},o=this.backend[a].bind(this.backend);if(o.length===2){try{let u=o(t,n);u&&typeof u.then=="function"?u.then(c=>s(null,c)).catch(s):s(null,u)}catch(u){s(u)}return}return o(t,n,s)}prepareLoading(t,n,a={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();F(t)&&(t=this.languageUtils.toResolveHierarchy(t)),F(n)&&(n=[n]);let l=this.queueLoad(t,n,a,i);if(!l.toLoad.length)return l.pending.length||i(),null;l.toLoad.forEach(r=>{this.loadOne(r)})}load(t,n,a){this.prepareLoading(t,n,{},a)}reload(t,n,a){this.prepareLoading(t,n,{reload:!0},a)}loadOne(t,n=""){let a=t.split("|"),i=a[0],l=a[1];this.read(i,l,"read",void 0,void 0,(r,s)=>{r&&this.logger.warn("".concat(n,"loading namespace ").concat(l," for language ").concat(i," failed"),r),!r&&s&&this.logger.log("".concat(n,"loaded namespace ").concat(l," for language ").concat(i),s),this.loaded(t,r,s)})}saveMissing(t,n,a,i,l,r={},s=()=>{}){var o,u,c,f,d;if((u=(o=this.services)==null?void 0:o.utils)!=null&&u.hasLoadedNamespace&&!((f=(c=this.services)==null?void 0:c.utils)!=null&&f.hasLoadedNamespace(n))){this.logger.warn('did not save key "'.concat(a,'" as the namespace "').concat(n,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(a==null||a==="")){if((d=this.backend)!=null&&d.create){let h=B(T({},r),{isUpdate:l}),b=this.backend.create.bind(this.backend);if(b.length<6)try{let v;b.length===5?v=b(t,n,a,i,h):v=b(t,n,a,i),v&&typeof v.then=="function"?v.then(E=>s(null,E)).catch(s):s(null,v)}catch(v){s(v)}else b(t,n,a,i,s,h)}!t||!t[0]||this.store.addResource(t[0],n,a,i)}}},Yc=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),F(e[1])&&(t.defaultValue=e[1]),F(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){let n=e[3]||e[2];Object.keys(n).forEach(a=>{t[a]=n[a]})}return t},interpolation:{escapeValue:!0,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),lm=e=>(F(e.ns)&&(e.ns=[e.ns]),F(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),F(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes("cimode")&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),io=()=>{},bT=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})},Jc=class e extends al{constructor(t={},n){if(super(),this.options=lm(t),this.services={},this.logger=zn,this.modules={external:[]},bT(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(t={},n){this.isInitializing=!0,typeof t=="function"&&(n=t,t={}),t.defaultNS==null&&t.ns&&(F(t.ns)?t.defaultNS=t.ns:t.ns.includes("translation")||(t.defaultNS=t.ns[0]));let a=Yc();this.options=T(T(T({},a),this.options),lm(t)),this.options.interpolation=T(T({},a.interpolation),this.options.interpolation),t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=a.overloadTranslationOptionHandler);let i=u=>u?typeof u=="function"?new u:u:null;if(!this.options.isClone){this.modules.logger?zn.init(i(this.modules.logger),this.options):zn.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:u=Zc;let c=new oo(this.options);this.store=new ro(this.options.resources,this.options);let f=this.services;f.logger=zn,f.resourceStore=this.store,f.languageUtils=c,f.pluralResolver=new $c(c,{prepend:this.options.pluralSeparator}),u&&(f.formatter=i(u),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new uo(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new Fc(i(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(d,...h)=>{this.emit(d,...h)}),this.modules.languageDetector&&(f.languageDetector=i(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=i(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new so(this.services,this.options),this.translator.on("*",(d,...h)=>{this.emit(d,...h)}),this.modules.external.forEach(d=>{d.init&&d.init(this)})}if(this.format=this.options.interpolation.format,n||(n=io),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=(...c)=>this.store[u](...c)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=(...c)=>(this.store[u](...c),this)});let s=Tr(),o=()=>{let u=(c,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(f),n(c,f)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initAsync?o():setTimeout(o,0),s}loadResources(t,n=io){var l,r;let a=n,i=F(t)?t:this.language;if(typeof t=="function"&&(a=t),!this.options.resources||this.options.partialBundledLanguages){if((i==null?void 0:i.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return a();let s=[],o=u=>{if(!u||u==="cimode")return;this.services.languageUtils.toResolveHierarchy(u).forEach(f=>{f!=="cimode"&&(s.includes(f)||s.push(f))})};i?o(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(c=>o(c)),(r=(l=this.options.preload)==null?void 0:l.forEach)==null||r.call(l,u=>o(u)),this.services.backendConnector.load(s,this.options.ns,u=>{!u&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),a(u)})}else a(null)}reloadResources(t,n,a){let i=Tr();return typeof t=="function"&&(a=t,t=void 0),typeof n=="function"&&(a=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),a||(a=io),this.services.backendConnector.reload(t,n,l=>{i.resolve(),a(l)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&sm.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!["cimode","dev"].includes(t)){for(let n=0;n<this.languages.length;n++){let a=this.languages[n];if(!["cimode","dev"].includes(a)&&this.store.hasLanguageSomeTranslations(a)){this.resolvedLanguage=a;break}}!this.resolvedLanguage&&!this.languages.includes(t)&&this.store.hasLanguageSomeTranslations(t)&&(this.resolvedLanguage=t,this.languages.unshift(t))}}changeLanguage(t,n){this.isLanguageChangingTo=t;let a=Tr();this.emit("languageChanging",t);let i=s=>{this.language=s,this.languages=this.services.languageUtils.toResolveHierarchy(s),this.resolvedLanguage=void 0,this.setResolvedLanguage(s)},l=(s,o)=>{o?this.isLanguageChangingTo===t&&(i(o),this.translator.changeLanguage(o),this.isLanguageChangingTo=void 0,this.emit("languageChanged",o),this.logger.log("languageChanged",o)):this.isLanguageChangingTo=void 0,a.resolve((...u)=>this.t(...u)),n&&n(s,(...u)=>this.t(...u))},r=s=>{var c,f;!t&&!s&&this.services.languageDetector&&(s=[]);let o=F(s)?s:s&&s[0],u=this.store.hasLanguageSomeTranslations(o)?o:this.services.languageUtils.getBestMatchFromCodes(F(s)?[s]:s);u&&(this.language||i(u),this.translator.language||this.translator.changeLanguage(u),(f=(c=this.services.languageDetector)==null?void 0:c.cacheUserLanguage)==null||f.call(c,u)),this.loadResources(u,d=>{l(d,u)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?r(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(r):this.services.languageDetector.detect(r):r(t),a}getFixedT(t,n,a,i){let l=i==null?void 0:i.scopeNs,r=(s,o,...u)=>{let c;typeof o!="object"?c=this.options.overloadTranslationOptionHandler([s,o].concat(u)):c=T({},o),c.lng=c.lng||r.lng,c.lngs=c.lngs||r.lngs;let f=c.ns!==void 0&&c.ns!==null;c.ns=c.ns||r.ns,c.keyPrefix!==""&&(c.keyPrefix=c.keyPrefix||a||r.keyPrefix);let d=T(T({},this.options),c);Array.isArray(l)&&!f&&(d.ns=l),typeof c.keyPrefix=="function"&&(c.keyPrefix=mi(c.keyPrefix,d));let h=this.options.keySeparator||".",b;return c.keyPrefix&&Array.isArray(s)?b=s.map(v=>(typeof v=="function"&&(v=mi(v,d)),"".concat(c.keyPrefix).concat(h).concat(v))):(typeof s=="function"&&(s=mi(s,d)),b=c.keyPrefix?"".concat(c.keyPrefix).concat(h).concat(s):s),this.t(b,c)};return F(t)?r.lng=t:r.lngs=t,r.ns=n,r.keyPrefix=a,r}t(...t){var n;return(n=this.translator)==null?void 0:n.translate(...t)}exists(...t){var n;return(n=this.translator)==null?void 0:n.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;let a=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,l=this.languages[this.languages.length-1];if(a.toLowerCase()==="cimode")return!0;let r=(s,o)=>{let u=this.services.backendConnector.state["".concat(s,"|").concat(o)];return u===-1||u===0||u===2};if(n.precheck){let s=n.precheck(this,r);if(s!==void 0)return s}return!!(this.hasResourceBundle(a,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||r(a,t)&&(!i||r(l,t)))}loadNamespaces(t,n){let a=Tr();return this.options.ns?(F(t)&&(t=[t]),t.forEach(i=>{this.options.ns.includes(i)||this.options.ns.push(i)}),this.loadResources(i=>{a.resolve(),n&&n(i)}),a):(n&&n(),Promise.resolve())}loadLanguages(t,n){let a=Tr();F(t)&&(t=[t]);let i=this.options.preload||[],l=t.filter(r=>!i.includes(r)&&this.services.languageUtils.isSupportedCode(r));return l.length?(this.options.preload=i.concat(l),this.loadResources(r=>{a.resolve(),n&&n(r)}),a):(n&&n(),Promise.resolve())}dir(t){var i,l;if(t||(t=this.resolvedLanguage||(((i=this.languages)==null?void 0:i.length)>0?this.languages[0]:this.language)),!t)return"rtl";try{let r=new Intl.Locale(t);if(r&&r.getTextInfo){let s=r.getTextInfo();if(s&&s.direction)return s.direction}}catch(r){}let n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],a=((l=this.services)==null?void 0:l.languageUtils)||new oo(Yc());return t.toLowerCase().indexOf("-latn")>1?"ltr":n.includes(a.getLanguagePartFromCode(t))||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},n){let a=new e(t,n);return a.createInstance=e.createInstance,a}cloneInstance(t={},n=io){let a=t.forkResourceStore;a&&delete t.forkResourceStore;let i=B(T(T({},this.options),t),{isClone:!0}),l=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(l.logger=l.logger.clone(t)),["store","services","language"].forEach(s=>{l[s]=this[s]}),l.services=T({},this.services),l.services.utils={hasLoadedNamespace:l.hasLoadedNamespace.bind(l)},a){let s=Object.keys(this.store.data).reduce((o,u)=>(o[u]=T({},this.store.data[u]),o[u]=Object.keys(o[u]).reduce((c,f)=>(c[f]=T({},o[u][f]),c),o[u]),o),{});l.store=new ro(s,i),l.services.resourceStore=l.store}if(t.interpolation){let s=Yc(),o=T(T(T({},s.interpolation),this.options.interpolation),t.interpolation),u=B(T({},i),{interpolation:o});l.services.interpolator=new uo(u)}return l.translator=new so(l.services,i),l.translator.on("*",(s,...o)=>{l.emit(s,...o)}),l.init(i,n),l.translator.options=i,l.translator.backendConnector.services.utils={hasLoadedNamespace:l.hasLoadedNamespace.bind(l)},l}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}},Tt=Jc.createInstance(),uN=Tt.createInstance,cN=Tt.dir,fN=Tt.init,dN=Tt.loadResources,pN=Tt.reloadResources,hN=Tt.use,mN=Tt.changeLanguage,gN=Tt.getFixedT,yN=Tt.t,bN=Tt.exists,vN=Tt.setDefaultNamespace,SN=Tt.hasLoadedNamespace,TN=Tt.loadNamespaces,xN=Tt.loadLanguages;function Er(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function gi(e){"@babel/helpers - typeof";return gi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},gi(e)}function um(e,t){if(gi(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t||"default");if(gi(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function co(e){var t=um(e,"string");return gi(t)=="symbol"?t:t+""}function cm(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,co(a.key),a)}}function wr(e,t,n){return t&&cm(e.prototype,t),n&&cm(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var dm=[],vT=dm.forEach,ST=dm.slice;function TT(e){return vT.call(ST.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e}function xT(e){return e?typeof e=="function"?new e:e:null}function kT(){return{handleEmptyResourcesAsFailed:!0,cacheHitMode:"none",retryOnFailure:!1}}function fm(e,t,n,a){var i=e.read.bind(e);if(i.length===2){try{var l=i(t,n);l&&typeof l.then=="function"?l.then(function(r){return a(null,r)}).catch(a):a(null,l)}catch(r){a(r)}return}i(t,n,a)}var Ic=(function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Er(this,e),this.backends=[],this.type="backend",this.allOptions=a,this.init(t,n)}return wr(e,[{key:"init",value:function(n){var a=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=n,this.options=TT(i,this.options||{},kT()),this.allOptions=l,this.options.backends&&this.options.backends.length>1&&(this.allOptions.saveMissing||this.allOptions.updateMissing)&&this.services&&this.services.logger&&this.services.logger.warn("i18next-chained-backend: Using multiple backends in combination with saveMissing/updateMissing is not recommended, as it may trigger based on stale data."),this.options.backends&&this.options.backends.forEach(function(r,s){a.backends[s]=a.backends[s]||xT(r),a.backends[s].init(n,a.options.backendOptions&&a.options.backendOptions[s]||{},l)}),this.services&&this.options.reloadInterval&&setInterval(function(){return a.reload()},this.options.reloadInterval)}},{key:"read",value:function(n,a,i){var l=this,r=this.backends.length,s=function(c){if(c>=r)return i(new Error("non of the backend loaded data"),l.options.retryOnFailure);var f=c===r-1,d=l.options.handleEmptyResourcesAsFailed&&!f?0:-1,h=l.backends[c];h.read?fm(h,n,a,function(b,v,E){if(!b&&v&&Object.keys(v).length>d){if(i(null,v,c),o(c-1,v),h.save&&l.options.cacheHitMode&&["refresh","refreshAndUpdateStore"].indexOf(l.options.cacheHitMode)>-1){if(E&&l.options.refreshExpirationTime&&E+l.options.refreshExpirationTime>Date.now())return;var m=l.backends[c+1];m&&m.read&&fm(m,n,a,function(p,y){p||y&&(Object.keys(y).length<=d||(o(c,y),l.options.cacheHitMode==="refreshAndUpdateStore"&&l.services&&l.services.resourceStore&&l.services.resourceStore.addResourceBundle(n,a,y)))})}}else s(c+1)}):s(c+1)},o=function(c,f){if(!(c<0)){var d=l.backends[c];d.save&&d.save(n,a,f),o(c-1,f)}};s(0)}},{key:"create",value:function(n,a,i,l){var r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:function(){},s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};this.backends.forEach(function(o){if(o.create){var u=o.create.bind(o);if(u.length<6){try{var c;u.length===5?c=u(n,a,i,l,s):c=u(n,a,i,l),c&&typeof c.then=="function"?c.then(function(f){return r(null,f)}).catch(r):r(null,c)}catch(f){r(f)}return}u(n,a,i,l,r,s)}})}},{key:"reload",value:function(){var n=this,a=this.services,i=a.backendConnector,l=a.languageUtils,r=a.logger,s=i.language;if(!(s&&s.toLowerCase()==="cimode")){var o=[],u=function(f){var d=l.toResolveHierarchy(f);d.forEach(function(h){o.indexOf(h)<0&&o.push(h)})};u(s),this.allOptions.preload&&this.allOptions.preload.forEach(function(c){return u(c)}),o.forEach(function(c){n.allOptions.ns.forEach(function(f){i.read(c,f,"read",null,null,function(d,h){d&&r.warn("loading namespace ".concat(f," for language ").concat(c," failed"),d),!d&&h&&r.log("loaded namespace ".concat(f," for language ").concat(c),h),i.loaded("".concat(c,"|").concat(f),d,h)})})})}}}])})();Ic.type="backend";var gm=[];gm.forEach;gm.slice;var ym=["__proto__","constructor","prototype"];function bm(e){return!(typeof e!="string"||e.length===0||e.length>128||ym.indexOf(e)>-1||e.indexOf("..")>-1||e.indexOf("\\")>-1||/[?#%\s@]/.test(e)||/[\x00-\x1F\x7F]/.test(e))}function vm(e){return!(!bm(e)||e.indexOf("/")>-1)}function ET(e){return bm(e)}var wT={lng:vm,ns:ET};function fo(e){return typeof e!="string"?e:e.replace(/[\r\n\x00-\x1F\x7F]/g," ")}function AT(e){if(typeof e!="string"||e.length===0)return e;try{let t=new URL(e);return t.username||t.password?(t.username="",t.password="",t.toString()):e}catch(t){return e.replace(/(\/\/)[^/@\s]+@/g,"$1")}}function Sm(){return typeof XMLHttpRequest=="function"||typeof XMLHttpRequest=="object"}function NT(e){return!!e&&typeof e.then=="function"}function RT(e){return NT(e)?e:Promise.resolve(e)}var OT=/\{\{(.+?)\}\}/g;function pm(e,t){let n=!1,a=e.replace(OT,(i,l)=>{let r=l.trim();if(ym.indexOf(r)>-1)return i;let s=t[r];if(s==null)return i;let o=wT[r]||vm,u=String(s).split("+");for(let c of u)if(!o(c))return n=!0,i;return u.join("+")});return n?null:a}var yi=typeof globalThis<"u"?globalThis:typeof global<"u"?global:typeof window<"u"?window:void 0,po;typeof fetch=="function"?po=fetch:yi&&typeof yi.fetch=="function"&&(po=yi.fetch);var hm=Sm()&&yi?yi.XMLHttpRequest:void 0,CT=typeof ActiveXObject=="function"&&yi?yi.ActiveXObject:void 0,Tm=["__proto__","constructor","prototype"],Pc=(e,t)=>{if(t&&typeof t=="object"){let n="";for(let a of Object.keys(t))Tm.indexOf(a)>-1||(n+="&"+encodeURIComponent(a)+"="+encodeURIComponent(t[a]));if(!n)return e;e=e+(e.indexOf("?")!==-1?"&":"?")+n.slice(1)}return e},mm=(e,t,n,a)=>{let i=l=>{if(!l.ok)return n(l.statusText||"Error",{status:l.status});l.text().then(r=>{n(null,{status:l.status,data:r})}).catch(n)};if(a){let l=a(e,t);if(l instanceof Promise){l.then(i).catch(n);return}}typeof fetch=="function"?fetch(e,t).then(i).catch(n):po(e,t).then(i).catch(n)},_T=(e,t,n,a)=>{e.queryStringParams&&(t=Pc(t,e.queryStringParams));let i=T({},typeof e.customHeaders=="function"?e.customHeaders():e.customHeaders);typeof window>"u"&&typeof global<"u"&&typeof global.process<"u"&&global.process.versions&&global.process.versions.node&&(i["User-Agent"]="i18next-http-backend (node/".concat(global.process.version,"; ").concat(global.process.platform," ").concat(global.process.arch,")")),n&&(i["Content-Type"]="application/json");let l=typeof e.requestOptions=="function"?e.requestOptions(n):e.requestOptions,r=T({method:n?"POST":"GET",body:n?e.stringify(n):void 0,headers:i},e._omitFetchOptions?{}:l),s=typeof e.alternateFetch=="function"&&e.alternateFetch.length>=1?e.alternateFetch:void 0;try{mm(t,r,a,s)}catch(o){if(!l||Object.keys(l).length===0||!o.message||o.message.indexOf("not implemented")<0)return a(o);try{Object.keys(l).forEach(u=>{delete r[u]}),mm(t,r,a,s),e._omitFetchOptions=!0}catch(u){a(u)}}},DT=(e,t,n,a)=>{n&&typeof n=="object"&&(n=Pc("",n).slice(1)),e.queryStringParams&&(t=Pc(t,e.queryStringParams));try{let i=hm?new hm:new CT("MSXML2.XMLHTTP.3.0");i.open(n?"POST":"GET",t,1),e.crossDomain||i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.withCredentials=!!e.withCredentials,n&&i.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),i.overrideMimeType&&i.overrideMimeType("application/json");let l=e.customHeaders;if(l=typeof l=="function"?l():l,l)for(let r of Object.keys(l))Tm.indexOf(r)>-1||i.setRequestHeader(r,l[r]);i.onreadystatechange=()=>{i.readyState>3&&a(i.status>=400?i.statusText:null,{status:i.status,data:i.responseText})},i.send(n)}catch(i){console&&console.log(i)}},MT=(e,t,n,a)=>{if(typeof n=="function"&&(a=n,n=void 0),a=a||(()=>{}),po&&t.indexOf("file:")!==0)return _T(e,t,n,a);if(Sm()||typeof ActiveXObject=="function")return DT(e,t,n,a);a(new Error("No fetch and no xhr implementation found!"))},zT=()=>({loadPath:"/locales/{{lng}}/{{ns}}.json",addPath:"/locales/add/{{lng}}/{{ns}}",parse:e=>JSON.parse(e),stringify:JSON.stringify,parsePayload:(e,t,n)=>({[t]:n||""}),parseLoadPayload:(e,t)=>{},request:MT,reloadInterval:typeof window<"u"?!1:3600*1e3,customHeaders:{},queryStringParams:{},crossDomain:!1,withCredentials:!1,overrideMimeType:!1,requestOptions:{mode:"cors",credentials:"same-origin",cache:"default"}}),Wc=class{constructor(e,t={},n={}){this.services=e,this.options=t,this.allOptions=n,this.type="backend",this.init(e,t,n)}init(e,t={},n={}){if(this.services=e,this.options=T(T(T({},zT()),this.options||{}),t),this.allOptions=n,this.services&&this.options.reloadInterval){let a=setInterval(()=>this.reload(),this.options.reloadInterval);typeof a=="object"&&typeof a.unref=="function"&&a.unref()}}readMulti(e,t,n){this._readAny(e,e,t,t,n)}read(e,t,n){this._readAny([e],e,[t],t,n)}_readAny(e,t,n,a,i){let l=this.options.loadPath;typeof this.options.loadPath=="function"&&(l=this.options.loadPath(e,n)),l=RT(l),l.then(r=>{if(!r)return i(null,{});let s=pm(r,{lng:e.join("+"),ns:n.join("+")});if(s==null){let o=e.map(fo).join(", "),u=n.map(fo).join(", ");return i(new Error("i18next-http-backend: unsafe lng/ns value \u2014 refusing to build request URL for languages=["+o+"] namespaces=["+u+"]"),!1)}this.loadUrl(s,i,t,a)})}loadUrl(e,t,n,a){let i=typeof n=="string"?[n]:n,l=typeof a=="string"?[a]:a,r=this.options.parseLoadPayload(i,l),s=fo(AT(e));this.options.request(this.options,e,r,(o,u)=>{if(u&&(u.status>=500&&u.status<600||!u.status))return t("failed loading "+s+"; status code: "+u.status,!0);if(u&&u.status>=400&&u.status<500)return t("failed loading "+s+"; status code: "+u.status,!1);if(!u&&o&&o.message){let d=o.message.toLowerCase();if(["failed","fetch","network","load"].find(h=>d.indexOf(h)>-1))return t("failed loading "+s+": "+fo(o.message),!0)}if(o)return t(o,!1);let c,f;try{typeof u.data=="string"?c=this.options.parse(u.data,n,a):c=u.data}catch(d){f="failed parsing "+s+" to json"}if(f)return t(f,!1);t(null,c)})}create(e,t,n,a,i){if(!this.options.addPath)return;typeof e=="string"&&(e=[e]);let l=this.options.parsePayload(t,n,a),r=0,s=[],o=[];e.forEach(u=>{let c=this.options.addPath;typeof this.options.addPath=="function"&&(c=this.options.addPath(u,t));let f=pm(c,{lng:u,ns:t});if(f==null){r+=1,i&&r===e.length&&i(s,o);return}this.options.request(this.options,f,l,(d,h)=>{r+=1,s.push(d),o.push(h),r===e.length&&typeof i=="function"&&i(s,o)})})}reload(){let{backendConnector:e,languageUtils:t,logger:n}=this.services,a=e.language;if(a&&a.toLowerCase()==="cimode")return;let i=[],l=r=>{t.toResolveHierarchy(r).forEach(s=>{i.indexOf(s)<0&&i.push(s)})};l(a),this.allOptions.preload&&this.allOptions.preload.forEach(r=>l(r)),i.forEach(r=>{this.allOptions.ns.forEach(s=>{e.read(r,s,"read",null,null,(o,u)=>{o&&n.warn("loading namespace ".concat(s," for language ").concat(r," failed"),o),!o&&u&&n.log("loaded namespace ".concat(s," for language ").concat(r),u),e.loaded("".concat(r,"|").concat(s),o,u)})})})}};Wc.type="backend";function xm(e,t,n){return(t=co(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function km(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,a)}return n}function ef(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?km(Object(n),!0).forEach(function(a){xm(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):km(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}var LT=(function(){function e(t){Er(this,e),this.store=t.store}return wr(e,[{key:"setItem",value:function(n,a){if(this.store)try{this.store.setItem(n,a)}catch(i){}}},{key:"getItem",value:function(n,a){if(this.store)try{return this.store.getItem(n,a)}catch(i){}}}])})();function BT(){var e=null;try{e=window.localStorage}catch(t){typeof window<"u"&&console.log("Failed to load local storage.",t)}return{prefix:"i18next_res_",expirationTime:10080*60*1e3,defaultVersion:void 0,getVersion:void 0,versions:{},store:e}}var tf=(function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Er(this,e),this.init(t,n),this.type="backend"}return wr(e,[{key:"init",value:function(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.services=n,this.options=ef(ef(ef({},BT()),this.options),a),this.storage=new LT(this.options)}},{key:"read",value:function(n,a,i){var l=Date.now();if(!this.storage.store)return i(null,null);var r=this.storage.getItem("".concat(this.options.prefix).concat(n,"-").concat(a));if(r){r=JSON.parse(r);var s=this.getVersion(n,a);if(r.i18nStamp&&r.i18nStamp+this.options.expirationTime>l&&s===r.i18nVersion){var o=r.i18nStamp;return delete r.i18nVersion,delete r.i18nStamp,i(null,r,o)}}return i(null,null)}},{key:"save",value:function(n,a,i){if(this.storage.store){i.i18nStamp=Date.now();var l=this.getVersion(n,a);l&&(i.i18nVersion=l),this.storage.setItem("".concat(this.options.prefix).concat(n,"-").concat(a),JSON.stringify(i))}}},{key:"getVersion",value:function(n,a){var i,l;return((i=(l=this.options).getVersion)===null||i===void 0?void 0:i.call(l,n,a))||this.options.versions[n]||this.options.defaultVersion}}])})();tf.type="backend";var lx=$(ye(),1);var Nr=$(ye(),1);var WT=$(Um());var mo=(e,t,n,a)=>{var l,r,s,o;let i=[n,T({code:t},a||{})];if((r=(l=e==null?void 0:e.services)==null?void 0:l.logger)!=null&&r.forward)return e.services.logger.forward(i,"warn","react-i18next::",!0);xn(i[0])&&(i[0]="react-i18next:: ".concat(i[0])),(o=(s=e==null?void 0:e.services)==null?void 0:s.logger)!=null&&o.warn?e.services.logger.warn(...i):console!=null&&console.warn&&console.warn(...i)},Hm={},Ra=(e,t,n,a)=>{xn(n)&&Hm[n]||(xn(n)&&(Hm[n]=new Date),mo(e,t,n,a))},qm=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},go=(e,t,n)=>{e.loadNamespaces(t,qm(e,n))},cf=(e,t,n,a)=>{if(xn(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return go(e,n,a);n.forEach(i=>{e.options.ns.indexOf(i)<0&&e.options.ns.push(i)}),e.loadLanguages(t,qm(e,a))},jm=(e,t,n={})=>!t.languages||!t.languages.length?(Ra(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(a,i)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!i(a.isLanguageChangingTo,e))return!1}});var xn=e=>typeof e=="string",ff=e=>typeof e=="object"&&e!==null;var ex=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,tx={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"\xA9","©":"\xA9","®":"\xAE","®":"\xAE","…":"\u2026","…":"\u2026","/":"/","/":"/"},nx=e=>tx[e],df=e=>e.replace(ex,nx);var pf={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:df,transDefaultProps:void 0},yo=(e={})=>{pf=T(T({},pf),e)},Ar=()=>pf;var Vm,bo=e=>{Vm=e},kn=()=>Vm;var Gm=$(ye(),1);var vo={type:"3rdParty",init(e){yo(e.options.react),bo(e)}};var Oa=(0,Gm.createContext)(),So=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}};var $m=$(ye(),1);var bi=$(ye(),1);var rl=class e extends Error{constructor(t,n,a){super(t),this.name="TranslationParserError",this.position=n,this.translationString=a,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};var Ym={" ":"\xA0","&":"&","<":"<",">":">",""":'"',"'":"'","©":"\xA9","®":"\xAE","™":"\u2122","…":"\u2026","–":"\u2013","—":"\u2014","‘":"\u2018","’":"\u2019","‚":"\u201A","“":"\u201C","”":"\u201D","„":"\u201E","†":"\u2020","‡":"\u2021","•":"\u2022","′":"\u2032","″":"\u2033","‹":"\u2039","›":"\u203A","§":"\xA7","¶":"\xB6","·":"\xB7"," ":"\u2002"," ":"\u2003"," ":"\u2009","€":"\u20AC","£":"\xA3","¥":"\xA5","¢":"\xA2","¤":"\xA4","×":"\xD7","÷":"\xF7","−":"\u2212","±":"\xB1","≠":"\u2260","≤":"\u2264","≥":"\u2265","≈":"\u2248","≡":"\u2261","∞":"\u221E","∫":"\u222B","∑":"\u2211","∏":"\u220F","√":"\u221A","∂":"\u2202","‰":"\u2030","°":"\xB0","µ":"\xB5","←":"\u2190","↑":"\u2191","→":"\u2192","↓":"\u2193","↔":"\u2194","↵":"\u21B5","⇐":"\u21D0","⇑":"\u21D1","⇒":"\u21D2","⇓":"\u21D3","⇔":"\u21D4","α":"\u03B1","β":"\u03B2","γ":"\u03B3","δ":"\u03B4","ε":"\u03B5","ζ":"\u03B6","η":"\u03B7","θ":"\u03B8","ι":"\u03B9","κ":"\u03BA","λ":"\u03BB","μ":"\u03BC","ν":"\u03BD","ξ":"\u03BE","ο":"\u03BF","π":"\u03C0","ρ":"\u03C1","σ":"\u03C3","τ":"\u03C4","υ":"\u03C5","φ":"\u03C6","χ":"\u03C7","ψ":"\u03C8","ω":"\u03C9","Α":"\u0391","Β":"\u0392","Γ":"\u0393","Δ":"\u0394","Ε":"\u0395","Ζ":"\u0396","Η":"\u0397","Θ":"\u0398","Ι":"\u0399","Κ":"\u039A","Λ":"\u039B","Μ":"\u039C","Ν":"\u039D","Ξ":"\u039E","Ο":"\u039F","Π":"\u03A0","Ρ":"\u03A1","Σ":"\u03A3","Τ":"\u03A4","Υ":"\u03A5","Φ":"\u03A6","Χ":"\u03A7","Ψ":"\u03A8","Ω":"\u03A9","À":"\xC0","Á":"\xC1","Â":"\xC2","Ã":"\xC3","Ä":"\xC4","Å":"\xC5","Æ":"\xC6","Ç":"\xC7","È":"\xC8","É":"\xC9","Ê":"\xCA","Ë":"\xCB","Ì":"\xCC","Í":"\xCD","Î":"\xCE","Ï":"\xCF","Ð":"\xD0","Ñ":"\xD1","Ò":"\xD2","Ó":"\xD3","Ô":"\xD4","Õ":"\xD5","Ö":"\xD6","Ø":"\xD8","Ù":"\xD9","Ú":"\xDA","Û":"\xDB","Ü":"\xDC","Ý":"\xDD","Þ":"\xDE","ß":"\xDF","à":"\xE0","á":"\xE1","â":"\xE2","ã":"\xE3","ä":"\xE4","å":"\xE5","æ":"\xE6","ç":"\xE7","è":"\xE8","é":"\xE9","ê":"\xEA","ë":"\xEB","ì":"\xEC","í":"\xED","î":"\xEE","ï":"\xEF","ð":"\xF0","ñ":"\xF1","ò":"\xF2","ó":"\xF3","ô":"\xF4","õ":"\xF5","ö":"\xF6","ø":"\xF8","ù":"\xF9","ú":"\xFA","û":"\xFB","ü":"\xFC","ý":"\xFD","þ":"\xFE","ÿ":"\xFF","¡":"\xA1","¿":"\xBF","ƒ":"\u0192","ˆ":"\u02C6","˜":"\u02DC","Œ":"\u0152","œ":"\u0153","Š":"\u0160","š":"\u0161","Ÿ":"\u0178","ª":"\xAA","º":"\xBA","¯":"\xAF","´":"\xB4","¸":"\xB8","¹":"\xB9","²":"\xB2","³":"\xB3","¼":"\xBC","½":"\xBD","¾":"\xBE","♠":"\u2660","♣":"\u2663","♥":"\u2665","♦":"\u2666","◊":"\u25CA","‾":"\u203E","⁄":"\u2044","℘":"\u2118","ℑ":"\u2111","ℜ":"\u211C","ℵ":"\u2135"},rx=new RegExp(Object.keys(Ym).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),"g"),Km=e=>e.replace(rx,t=>Ym[t]).replace(/&#(\d+);/g,(t,n)=>String.fromCharCode(parseInt(n,10))).replace(/&#x([0-9a-fA-F]+);/g,(t,n)=>String.fromCharCode(parseInt(n,16)));var Xm=e=>{let t=[],n=0,a="",i=()=>{a&&(t.push({type:"Text",value:a,position:n-a.length}),a="")};for(;n<e.length;){let l=e[n];if(l==="<"){let r=e.slice(n).match(/^<(\d+)>/);if(r)i(),t.push({type:"TagOpen",value:r[0],position:n,tagNumber:parseInt(r[1],10)}),n+=r[0].length;else{let s=e.slice(n).match(/^<\/(\d+)>/);s?(i(),t.push({type:"TagClose",value:s[0],position:n,tagNumber:parseInt(s[1],10)}),n+=s[0].length):(a+=l,n+=1)}}else a+=l,n+=1}return i(),t};var Rr=$(ye(),1);var sx=(e,t,n)=>{let{type:a,props:i={}}=e;if(i.children&&Array.isArray(i.children)&&n){let l=i,{children:r}=l,s=ta(l,["children"]);return Rr.default.createElement(a,s,...t)}return t.length===0?Rr.default.createElement(a,i):t.length===1?Rr.default.createElement(a,i,t[0]):Rr.default.createElement(a,i,...t)},Qm=(e,t=[])=>{if(!e)return[];let n=Xm(e),a=[],i=[],l=new Set,r=()=>{var o;if(i.length===0)return t;let s=i[i.length-1];return(o=s.declaration.props)!=null&&o.children&&Array.isArray(s.declaration.props.children)?s.declaration.props.children:s.declarations};if(n.forEach(s=>{switch(s.type){case"Text":{let o=Km(s.value);(i.length>0?i[i.length-1].children:a).push(o)}break;case"TagOpen":{let{tagNumber:o}=s,u=r(),c=u[o];if(!c){l.add(o);let f="<".concat(o,">");(i.length>0?i[i.length-1].children:a).push(f);break}i.push({tagNumber:o,children:[],position:s.position,declaration:c,declarations:u})}break;case"TagClose":{let{tagNumber:o}=s;if(l.has(o)){let d="</".concat(o,">");(i.length>0?i[i.length-1].children:a).push(d),l.delete(o);break}if(i.length===0)throw new rl("Unexpected closing tag </".concat(o,"> at position ").concat(s.position),s.position,e);let u=i.pop();if(u.tagNumber!==o)throw new rl("Mismatched tags: expected </".concat(u.tagNumber,"> but got </").concat(o,"> at position ").concat(s.position),s.position,e);let c=sx(u.declaration,u.children,u.declarations);(i.length>0?i[i.length-1].children:a).push(c)}break}}),i.length>0){let s=i[i.length-1];throw new rl("Unclosed tag <".concat(s.tagNumber,"> at position ").concat(s.position),s.position,e)}return a};function To({i18nKey:e,defaultTranslation:t,content:n,ns:a,values:i={},i18n:l,t:r}){var d,h,b,v;let s=l||kn();if(!s)return Ra(s,"NO_I18NEXT_INSTANCE","IcuTrans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:e}),bi.default.createElement(bi.default.Fragment,{},t);let o=r||((d=s.t)==null?void 0:d.bind(s))||(E=>E),u=a||o.ns||((h=s.options)==null?void 0:h.defaultNS);u=xn(u)?[u]:u||["translation"];let c=i;(v=(b=s.options)==null?void 0:b.interpolation)!=null&&v.defaultVariables&&(c=i&&Object.keys(i).length>0?T(T({},i),s.options.interpolation.defaultVariables):T({},s.options.interpolation.defaultVariables));let f=o(e,B(T({defaultValue:t},c),{ns:u}));try{let E=Qm(f,n);return bi.default.createElement(bi.default.Fragment,{},...E)}catch(E){return mo(s,"ICU_TRANS_RENDER_ERROR",'IcuTrans component error for key "'.concat(e,'": ').concat(E.message),{i18nKey:e,error:E}),bi.default.createElement(bi.default.Fragment,{},f)}}To.displayName="IcuTransWithoutContext";function Zm({i18nKey:e,defaultTranslation:t,content:n,ns:a,values:i={},i18n:l,t:r}){var f;let{i18n:s,defaultNS:o}=(0,$m.useContext)(Oa)||{},u=l||s||kn(),c=r||(u==null?void 0:u.t.bind(u));return To({i18nKey:e,defaultTranslation:t,content:n,ns:a||(c==null?void 0:c.ns)||o||((f=u==null?void 0:u.options)==null?void 0:f.defaultNS),values:i,i18n:u,t:r})}Zm.displayName="IcuTrans";var rt=$(ye(),1),Wm=$(Pm(),1);var yx=(e,t)=>{if(xn(t))return t;if(ff(t)&&xn(t.defaultValue))return t.defaultValue;if(typeof e=="function")return"";if(Array.isArray(e)){let n=e[e.length-1];return typeof n=="function"?"":n}return e},bx={t:yx,ready:!1},vx=()=>()=>{},Ze=(e,t={})=>{var D,L,oe;let{i18n:n}=t,{i18n:a,defaultNS:i}=(0,rt.useContext)(Oa)||{},l=n||a||kn();l&&!l.reportNamespaces&&(l.reportNamespaces=new So),l||Ra(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");let r=(0,rt.useMemo)(()=>{var K;return T(T(T({},Ar()),(K=l==null?void 0:l.options)==null?void 0:K.react),t)},[l,t]),{useSuspense:s,keyPrefix:o}=r,u=e||i||((D=l==null?void 0:l.options)==null?void 0:D.defaultNS),c=xn(u)?[u]:u||["translation"],f=(0,rt.useMemo)(()=>c,c);(oe=(L=l==null?void 0:l.reportNamespaces)==null?void 0:L.addUsedNamespaces)==null||oe.call(L,f);let d=(0,rt.useRef)(0),h=(0,rt.useCallback)(K=>{if(!l)return vx;let{bindI18n:q,bindI18nStore:O}=r,X=()=>{d.current+=1,K()};return q&&l.on(q,X),O&&l.store.on(O,X),()=>{q&&q.split(" ").forEach(I=>l.off(I,X)),O&&O.split(" ").forEach(I=>l.store.off(I,X))}},[l,r]),b=(0,rt.useRef)(),v=(0,rt.useCallback)(()=>{if(!l)return bx;let K=!!(l.isInitialized||l.initializedStoreOnce)&&f.every(Ae=>jm(Ae,l,r)),q=t.lng||l.language,O=d.current,X=b.current;if(X&&X.ready===K&&X.lng===q&&X.keyPrefix===o&&X.revision===O)return X;let ge={t:l.getFixedT(q,r.nsMode==="fallback"?f:f[0],o,{scopeNs:f}),ready:K,lng:q,keyPrefix:o,revision:O};return b.current=ge,ge},[l,f,o,r,t.lng]),[E,m]=(0,rt.useState)(0),{t:p,ready:y}=(0,Wm.useSyncExternalStore)(h,v,v);(0,rt.useEffect)(()=>{if(l&&!y&&!s){let K=()=>m(q=>q+1);t.lng?cf(l,t.lng,f,K):go(l,f,K)}},[l,t.lng,f,y,s,E]);let S=l||{},x=(0,rt.useRef)(null),R=(0,rt.useRef)(),N=K=>{let q=Object.getOwnPropertyDescriptors(K);q.__original&&delete q.__original;let O=Object.create(Object.getPrototypeOf(K),q);if(!Object.prototype.hasOwnProperty.call(O,"__original"))try{Object.defineProperty(O,"__original",{value:K,writable:!1,enumerable:!1,configurable:!1})}catch(X){}return O},z=(0,rt.useMemo)(()=>{let K=S,q=K==null?void 0:K.language,O=K;K&&(x.current&&x.current.__original===K?R.current!==q?(O=N(K),x.current=O,R.current=q):O=x.current:(O=N(K),x.current=O,R.current=q));let X=!y&&!s?(...ge)=>(Ra(l,"USE_T_BEFORE_READY","useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t."),p(...ge)):p,I=[X,O,y];return I.t=X,I.i18n=O,I.ready=y,I},[p,S,y,S.resolvedLanguage,S.language,S.languages]);if(l&&s&&!y)throw new Promise(K=>{let q=()=>K();t.lng?cf(l,t.lng,f,q):go(l,f,q)});return z};var eg=$(ye(),1);var tg=$(ye(),1);var Ex=$(ye(),1);var Tx=$(ye(),1);var ng={auth:{invalidUsernamePass:"Invalid username/password combination",tooManyAttempts:"Too many login attempts. Please try again later.",incorrectOldPassword:"Incorrect Old Password",passwordTooShort:"Password must be at least 6 characters long",passUpdated:"Password updated",missingRequiredFields:"Missing Required Fields"},error:{notFound:"Not Found",internalError:"Internal Server Error",invalidArgs:"Invalid Arguments",badMethod:"Bad Method",notAuthenticated:"Not Authenticated",permissionDenied:"Permission Denied",error:"error: {{status}}",errorWithMsg:"error {{status}}: {{msg}}",requestTimedOut:"request timed out",networkError:"network error",upsertUnauthorized:"not authorized",upsertNotFound:"not found",upsertHrefUsedByOther:"href already used by another bookmark",upsertConflictWithNewer:"item on server has been updated more recently; reload and retry",upsertInvalidInput:"invalid input"},nav:{privateProfileEnabled:"private profile enabled",darkMode:"dark mode",lightMode:"light mode",addUrl:"add url",addNote:"add note",notes:"notes",settings:"settings",logout:"log out",login:"log in"},footer:{sourceCode:"Source Code"},login:{pageTitle:"Log In",username:"Username",password:"Password",submit:"Log In"},changePassword:{oldPassword:"Old Password",newPassword:"New Password",submit:"Save Changes",demoMode:"demo mode: password changes are disabled"},settings:{serverDefault:"Server Default",bookmarklet:"add url bookmarklet",changePassword:"Change Password",groupLanguage:"Language",groupArchive:"Archiving",groupGeneral:"General",groupPrivacy:"Privacy & Sharing",archiveDefault:"Archive new non-Private bookmarks by default",privateDefault:"Default new bookmarks to Private",suggestTags:"Enable tag suggestions",suggestTagsUseReturnKey:"Use return key to apply tag suggestions",privacyLock:"Privacy Lock (Private Account)",publicTagCloud:"Public Tag Cloud (visible to visitors)",previewNotes:"Show note previews in the note list",archivingDisabled:"Archiving Disabled",language:"Language",tabAccount:"Account Settings",tabImportExport:"Import / Export",export:"Export",import:"Import",exportBookmarksJson:"Bookmarks (JSON)",exportBookmarksHtml:"Bookmarks (Netscape HTML)",exportNotesJson:"Notes (JSON)",importBookmarksJson:"Bookmarks (Espial/Pinboard JSON)",importFirefoxJson:"Bookmarks (Firefox JSON)",importNetscapeHtml:"Bookmarks (Netscape HTML)",importNotesJson:"Notes (JSON)",importing:"importing\u2026",imported_one:"{{count}} item imported",imported_other:"{{count}} items imported",importParseError:"could not read file",tabApi:"Api",apiKeyTitle:"API Key",apiKeyHasKey:"An API key is currently set.",apiKeyNoKey:"No API key is set.",apiKeyCreate:"Create API Key",apiKeyReset:"Reset API Key",apiKeyRevoke:"Revoke",apiKeyShownOnce:"This key is shown only once. Copy it now \u2014 you won't be able to see it again.",apiKeyResetHint:"Resetting or revoking invalidates your current key.",apiKeyCopy:"copy",apiKeyCopied:"copied"},rss:"RSS",filter:{all:"all",private:"private",public:"public",unread:"unread",untagged:"untagged",starred:"starred"},pagination:{perPage:"per page:"},sort:{label:"sort:",time:"time",url:"url",title:"title",tagcount:"tagcount",created:"created"},pager:{earlier:"\xAB earlier",later:"later \xBB",previous:"\xAB previous",next:"next \xBB"},notes:{count_one:"{{count}} note",count_other:"{{count}} notes"},search:{placeholder:"search",clearTitle:"clear search results",submitTitle:"submit search",syntaxTitle:"search syntax"},noTitle:"[no title]",edit:"edit",delete:"delete",cancel:"cancel",destroy:"destroy",save:"save",fetch:"fetch",archive:"archive",archiving:"archiving",bmark:{archiveLinkTitle:"archive link",markAsRead:"mark as read",viewInContext:"view in context",url:"url",title:"title",description:"description",tags:"tags",private:"private",toread:"to-read"},note:{killed:"you killed this note",titleLabel:"title:",descriptionLabel:"description:",useMarkdown:"use markdown?",publicLabel:"public?"},addForm:{previouslySaved:"previously saved",url:"URL",archive:"archive",archiveUnavailable:"archiving is unavailable for private bookmarks",readLater:"read later",update:"update bookmark",add:"add bookmark",killed:"you killed this bookmark"},tagCloud:{relatedTags:"Related Tags",topTags:"Top Tags",topTagsTitle:"show a cloud of your most-used tags",allTitle:"show all tags",min2Title:"show tags with at least 2 bookmarks",min5Title:"show tags with at least 5 bookmarks",min10Title:"show tags with at least 10 bookmarks",min20Title:"show tags with at least 20 bookmarks",hide:"hide",show:"show"},bulkEdit:{edit:"edit",select:"select:",oneBookmarkSelected:"1 bookmark selected",bookmarksSelected:"{{count}} bookmarks selected",thisPage:"this page",allPages:"all pages",action:"action:",markAsRead:"mark as read",unread:"unread",addStars:"add stars",removeStars:"remove stars",makePrivate:"make private",makePublic:"make public",removeTags:"remove tags:",addTags:"add tags:",submitting:"submitting\u2026",submit:"submit",destroyOne:"destroy 1 bookmark?",destroyMany:"destroy {{count}} bookmarks?",publicOne:"make 1 bookmark public?",publicMany:"make {{count}} bookmarks public?",pleaseAddSelection:"please add a bookmark selection",pleaseChooseAction:"please choose an action or enter tags",tooManyTags:"cannot add more than 10 tags at the same time when over 20,000 bookmarks would be affected",pageMismatch:"page bookmark count mismatch",editedCount_one:"edited {{editedCount}} bookmark",editedCount_other:"edited {{editedCount}} bookmarks",editedCountMismatch_one:"selection count was {{selectionCount}}, but edited {{editedCount}} bookmark, due to matching bookmark data having changed",editedCountMismatch_other:"selection count was {{selectionCount}}, but edited {{editedCount}} bookmarks, due to matching bookmark data having changed"},bulkEditNotes:{oneNoteSelected:"1 note selected",notesSelected:"{{count}} notes selected",destroyOne:"destroy 1 note?",destroyMany:"destroy {{count}} notes?",publicOne:"make 1 note public?",publicMany:"make {{count}} notes public?",useMarkdown:"use markdown",usePlaintext:"use plaintext",pleaseAddSelection:"please add a note selection",pleaseChooseAction:"please choose an action",pageMismatch:"page note count mismatch",editedCount_one:"edited {{editedCount}} note",editedCount_other:"edited {{editedCount}} notes",editedCountMismatch_one:"selection count was {{selectionCount}}, but edited {{editedCount}} note, due to matching note data having changed",editedCountMismatch_other:"selection count was {{selectionCount}}, but edited {{editedCount}} notes, due to matching note data having changed"},docs:{title:"Understanding the Search Syntax",pageFilters:"Page filters",pageFiltersDesc:"Searches are scoped to the currently selected page filter.",soGiven:"So, given the possible page filters",if:"If",isCurrentlySelectedIncludes:"is currently selected, the search includes",bookmarks:"bookmarks",isCurrentlySelectedOnly:"is currently selected, the search only includes",bookmarksEtc:"bookmarks, etc..",combineAnd:"Combine Searches (AND)",separateBySpace:"Separate terms by a space.",forExample:"For example,",combineOr:"Combine Searches (OR)",put:"Put",betweenQuery:"between each search query.",excludeWords:"Exclude words from your search",inFrontWord:"in front of a word you want to leave out.",groupTerms:"Group search terms",putInParens:"Put parentheses around terms to group them into a single unit. Groups can be combined, negated, and nested.",searchPhrase:"Search for a phrase",putInQuotes:"Put phrase inside quotes.",specificField:"Search on a specific field",inFrontTerm:"in front of the term,",where:"where",isOneOfOptions:"is one of the options below",fieldContainsDesc:"A field search performs a contains search: the field only needs to contain the term.",exactField:"Exact search on a specific field",exactFieldDesc:"in front of the term to require the entire field to equal the term exactly. Available for text fields: url, title, description, tags.",bookmarkSearch:"Bookmark Search",noteSearch:"Note Search",fieldHeader:"FIELD",exampleHeader:"EXAMPLE",complexExamples:"More Complex Examples",complexExample1Desc:'"youtube" in url, and title of "haskell" or title of "python" and after 12/31/2017',complexExample2Desc:'"hacker news" not in title, and "news", "cnn", "npr" anywhere, or "the guardian" in the description',complexExample3Desc:'tagged both "haskell" and "youtube", or not tagged both "haskell" and "vimeo"; and not tagged both "surveys" and "news", and after 2018-12-31'}};function Xe(){return globalThis.app}function ol(e=navigator.language,t){let a=(t instanceof Date?t.getTime():new Date(t).getTime())-Date.now(),i=Math.abs(a),l=[["year",365*24*60*60*1e3],["month",720*60*60*1e3],["day",1440*60*1e3],["hour",3600*1e3],["minute",60*1e3],["second",1e3]],r=new Intl.RelativeTimeFormat(e,{numeric:"auto"});for(let[s,o]of l)if(i>=o||s==="second")return r.format(Math.round(a/o),s);return""}function Ca(e,t){return new Date(t).toLocaleString(e,{dateStyle:"full",timeStyle:"long"})}function ag(e,t){return new Date(t).toLocaleDateString(e,{year:"numeric",month:"short",day:"numeric"})}function ul(e){e.close()}function xo(e){var t;(t=document.getElementById(e))==null||t.focus()}function Ax(e){return decodeURIComponent(e)}function Nx(e){var r;let t=e.slice(0,1),a=(t==="#"||t==="?"?e.slice(1):e).split("&").filter(s=>s!==""),i=s=>Ax(s.replace(/\+/g," ")),l=[];for(let s of a){let[o,...u]=s.split("=");o&&(u.length===0?l.push([i(o),null]):u.length===1&&l.push([i(o),i((r=u[0])!=null?r:"")]))}return l}function Or(){return Nx(window.location.search)}function Cr(e,t){for(let[n,a]of e)if(n===t)return a;return null}function cl(e){return encodeURIComponent(e.replace(/\+/g,"%2B"))}function Ln(e){return e!=null?e:""}function aa(e){var t;return(t=e==null?void 0:e.replace(/,/g," ").replace(/\s+/g," ").trim())!=null?t:""}function ft(e,t,n){let a=n.trim();return!a.includes("\n")&&!a.includes("doctype html")&&a.length>0?e("error.errorWithMsg",{status:t,msg:a}):e("error.error",{status:t})}function ig(e){let t=5381,n=e.length;for(;n;)t=t*33^e.charCodeAt(--n);return(t>>>0).toString(36)}var lg="translation";var mf=Xe();Tt.use(Ic).use(vo).init({lng:mf.lang,fallbackLng:"en",defaultNS:lg,ns:[lg],partialBundledLanguages:!0,resources:{en:{translation:ng}},backend:{backends:[tf,Wc],backendOptions:[{prefix:"i18next_res_".concat(ig(mf.i18nR),"_"),expirationTime:10080*60*1e3},{loadPath:"".concat(mf.i18nR,"/{{lng}}/{{ns}}.json")}]},interpolation:{escapeValue:!1},load:"currentOnly"});var G1=$(ye()),Mh=$(U0());var Yn=class extends Error{constructor(){super(...arguments);Y(this,"name","KyError")}get isKyError(){return!0}};var tr=class extends Yn{constructor(n,a,i){var u;let l=n.status||n.status===0?n.status:"",r=(u=n.statusText)!=null?u:"",s="".concat(l," ").concat(r).trim(),o=s?"status code ".concat(s):"an unknown error";super("Request failed with ".concat(o,": ").concat(a.method," ").concat(a.url));Y(this,"name","HTTPError");Y(this,"response");Y(this,"request");Y(this,"options");Y(this,"data");this.response=n,this.request=a,this.options=i}};var nr=class extends Yn{constructor(n,a){super("Request failed due to a network error: ".concat(n.method," ").concat(n.url),a);Y(this,"name","NetworkError");Y(this,"request");this.request=n}};var ar=class extends Error{constructor(n){let a="Non-error value was thrown";try{typeof n=="string"?a=n:n&&typeof n=="object"&&"message"in n&&typeof n.message=="string"&&(a=n.message)}catch(i){}super(a);Y(this,"name","NonError");Y(this,"value");this.value=n}};var qi=class extends Yn{constructor(n){let a=n!=null&&n.cause?n.cause instanceof Error?n.cause:new ar(n.cause):void 0;super(n!=null&&n.code?"Forced retry: ".concat(n.code):"Forced retry",a?{cause:a}:void 0);Y(this,"name","ForceRetryError");Y(this,"customDelay");Y(this,"code");Y(this,"customRequest");this.customDelay=n==null?void 0:n.delay,this.code=n==null?void 0:n.code,this.customRequest=n==null?void 0:n.request}};var Pu=class extends Error{constructor(n){super("Response schema validation failed");Y(this,"name","SchemaValidationError");Y(this,"issues");this.issues=n}};var me=class extends Yn{constructor(n){super("Request timed out: ".concat(n.method," ").concat(n.url));Y(this,"name","TimeoutError");Y(this,"request");this.request=n}};var Zp=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream=="function",a=typeof globalThis.Request=="function";if(n&&a)try{t=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type")}catch(i){if(i instanceof Error&&i.message==="unsupported BodyInit type")return!1;throw i}return e&&!t})(),H0=typeof globalThis.AbortController=="function",Wu=typeof globalThis.AbortSignal=="function"&&typeof globalThis.AbortSignal.any=="function",q0=typeof globalThis.ReadableStream=="function",j0=typeof globalThis.FormData=="function",ec=["get","post","put","patch","head","delete"],aw=()=>{};aw();var V0={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*",bytes:"*/*"},ir=2147483647,G0=40,tc=Symbol("stop"),Ds=class{constructor(t){Y(this,"options");this.options=t}},Y0=e=>new Ds(e),K0={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,baseUrl:!0,prefix:!0,retry:!0,timeout:!0,totalTimeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},X0={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0};var nc=new TextEncoder,iw=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,a]of e)t+=G0,t+=nc.encode('Content-Disposition: form-data; name="'.concat(n,'"')).byteLength,t+=typeof a=="string"?nc.encode(a).byteLength:a.size;return t}return e instanceof Blob?e.size:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:typeof e=="string"?nc.encode(e).byteLength:e instanceof URLSearchParams?nc.encode(e.toString()).byteLength:0},Q0=(e,t,n)=>{let a,i=0;return e.pipeThrough(new TransformStream({transform(l,r){if(r.enqueue(l),a){i+=a.byteLength;let s=t===0?0:i/t;s>=1&&(s=1-Number.EPSILON),n==null||n({percent:s,totalBytes:Math.max(t,i),transferredBytes:i},a)}a=l},flush(){a&&(i+=a.byteLength,n==null||n({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},a))}}))},$0=(e,t)=>{if(!e.body)return e;let n={status:e.status,statusText:e.statusText,headers:e.headers};if(e.status===204)return new Response(null,n);let a=Math.max(0,Number(e.headers.get("content-length"))||0);return new Response(Q0(e.body,a,t),n)},Z0=(e,t,n)=>{if(!e.body)return e;let a=iw(n!=null?n:e.body);return new Request(e,{duplex:"half",body:Q0(e.body,a,t)})};var Kn=e=>e!==null&&typeof e=="object";var lw=Symbol("replaceOption"),Fp=e=>Kn(e)&&e[lw]===!0?{isReplace:!0,value:e.value}:{isReplace:!1,value:e};var zs=(...e)=>{for(let t of e)if((!Kn(t)||Array.isArray(t))&&t!==void 0)throw new TypeError("The `options` argument must be an object");return Pp({},...e)},Ip=(e={},t={})=>{let n=new globalThis.Headers(e),a=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[l,r]of i.entries())a&&r==="undefined"||r===void 0?n.delete(l):n.set(l,r);return n},Jp=e=>{if(!Kn(e)||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},lr=e=>{if(e instanceof URLSearchParams){let t=new URLSearchParams(e),n=e[li];return n&&(t[li]=new Set(n)),t}return e instanceof globalThis.Headers?new globalThis.Headers(e):Array.isArray(e)?[...e]:Jp(e)?T({},e):e},rw=e=>Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0)),sw=(e,t)=>Jp(e)&&Jp(t)?rw(T(T({},e),t)):Ip(e,t);function Ms(e,t,n){var a,i;return Object.hasOwn(t,n)&&t[n]===void 0?[]:Pp((a=e[n])!=null?a:[],(i=t[n])!=null?i:[])}var ac=(e={},t={})=>({init:Ms(e,t,"init"),beforeRequest:Ms(e,t,"beforeRequest"),beforeRetry:Ms(e,t,"beforeRetry"),beforeError:Ms(e,t,"beforeError"),afterResponse:Ms(e,t,"afterResponse")}),li=Symbol("deletedParameters"),ow=(e,t)=>{let n=new URLSearchParams,a=new Set;for(let i of[e,t])if(i!==void 0)if(i instanceof URLSearchParams){for(let[r,s]of i.entries())n.append(r,s),a.delete(r);let l=i[li];if(l)for(let r of l)n.delete(r),a.add(r)}else if(Array.isArray(i))for(let l of i){if(!Array.isArray(l)||l.length!==2)throw new TypeError("Array search parameters must be provided in [[key, value], ...] format");n.append(String(l[0]),String(l[1])),a.delete(String(l[0]))}else if(Kn(i))for(let[l,r]of Object.entries(i))r===void 0?(n.delete(l),a.add(l)):(n.append(l,String(r)),a.delete(l));else{let l=new URLSearchParams(i);for(let[r,s]of l.entries())n.append(r,s),a.delete(r)}return a.size>0&&(n[li]=a),n},Pp=(...e)=>{let t={},n={},a={},i,l=[];for(let r of e)if(Array.isArray(r))Array.isArray(t)||(t=[]),t=[...t,...r];else if(Kn(r)){for(let[s,o]of Object.entries(r)){if(s==="signal"&&o instanceof globalThis.AbortSignal){l.push(o);continue}let u=Fp(o),{isReplace:c}=u;if(o=u.value,s==="context"){if(o!=null&&(!Kn(o)||Array.isArray(o)))throw new TypeError("The `context` option must be an object");t=B(T({},t),{context:o==null?{}:T(c?{}:T({},t.context),o)});continue}if(s==="searchParams"){o==null?i=void 0:c?i=o:i=i===void 0?o:ow(i,o);continue}Kn(o)&&!c&&s in t&&(o=Pp(t[s],o)),t=B(T({},t),{[s]:o})}if(Kn(r.hooks)){let{value:s,isReplace:o}=Fp(r.hooks);a=ac(o?{}:a,s),t.hooks=a}if(Kn(r.headers)){let{value:s,isReplace:o}=Fp(r.headers);n=o?lr(s):sw(n,s),t.headers=n}}return i!==void 0&&(t.searchParams=i),l.length>0&&(l.length===1?t.signal=l[0]:Wu?t.signal=AbortSignal.any(l):t.signal=l.at(-1)),t};var J0=e=>ec.includes(e)?e.toUpperCase():e,uw=["get","put","head","delete","options","trace"],cw=[408,413,429,500,502,503,504],fw=[413,429,503],F0={limit:2,methods:uw,statusCodes:cw,afterStatusCodes:fw,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},I0=(e={})=>{var n;if(typeof e=="number")return B(T({},F0),{limit:e});if(e.methods&&!Array.isArray(e.methods))throw new Error("retry.methods must be an array");if(e.statusCodes&&!Array.isArray(e.statusCodes))throw new Error("retry.statusCodes must be an array");let t=Object.fromEntries(Object.entries(B(T({},e),{methods:(n=e.methods)==null?void 0:n.map(a=>a.toLowerCase())})).filter(([,a])=>a!==void 0));return T(T({},F0),t)};async function Wp(e,t,n,a){return new Promise((i,l)=>{let r=setTimeout(()=>{n&&n.abort(),l(new me(e))},a.timeout);a.fetch(e,t).then(i).catch(l).then(()=>{clearTimeout(r)})})}async function ic(e,{signal:t}){return new Promise((n,a)=>{t&&(t.throwIfAborted(),t.addEventListener("abort",i,{once:!0}));function i(){clearTimeout(l),a(t.reason)}let l=setTimeout(()=>{t==null||t.removeEventListener("abort",i),n()},e)})}var P0=e=>{let t={};for(let n in e)Object.hasOwn(e,n)&&!(n in X0)&&!(n in K0)&&(t[n]=e[n]);return t},W0=e=>{var t;return e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0||!!((t=e[li])!=null&&t.size):typeof e=="object"?Object.keys(e).length>0:typeof e=="string"?e.trim().length>0:!!e};var dw=Object.prototype.toString,pw=e=>dw.call(e)==="[object Error]",hw=new Set(["network error","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function eh(e){if(!(e&&pw(e)&&e.name==="TypeError"&&typeof e.message=="string"))return!1;let{message:n,stack:a}=e;return n==="Load failed"?a===void 0||"__sentry_captured__"in e:n.startsWith("error sending request for url")||n==="Failed to fetch"||n.startsWith("Failed to fetch (")&&n.endsWith(")")?!0:hw.has(n)}var th=(e,t)=>e instanceof t||(e==null?void 0:e.name)===t.name;function eS(e){return th(e,tr)}function tS(e){return th(e,nr)}function nS(e){return th(e,me)}var mw=10*1024*1024,gw="The `prefixUrl` option has been renamed `prefix` in v2 and enhanced to allow slashes in input. See also the new `baseUrl` option for improved flexibility with standard URL resolution: https://github.com/sindresorhus/ky#baseurl",Ls=Symbol("timedOutResponseData"),yw=e=>{var a;let t=/;\s*charset\s*=\s*(?:"([^"]+)"|([^;,\s]+))/i.exec(e),n=(a=t==null?void 0:t[1])!=null?a:t==null?void 0:t[2];if(n)try{return new TextDecoder(n)}catch(i){}return new TextDecoder},aS="The `schema` argument must follow the Standard Schema specification",bw=e=>typeof e!="object"?e:T(T(T(T({},e),e.methods&&{methods:[...e.methods]}),e.statusCodes&&{statusCodes:[...e.statusCodes]}),e.afterStatusCodes&&{afterStatusCodes:[...e.afterStatusCodes]}),rS=Object.prototype.toString,iS=e=>e instanceof globalThis.Request||rS.call(e)==="[object Request]",Bs=e=>e instanceof globalThis.Response||rS.call(e)==="[object Response]",vw=e=>Array.isArray(e)?e.map(t=>[...t]):lr(e);function Sw(e){let t=B(T({},e),{json:lr(e.json),context:lr(e.context),headers:lr(e.headers),searchParams:vw(e.searchParams)});return e.retry!==void 0&&(t.retry=bw(e.retry)),t}var lS=async(e,t)=>{if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(aS);let n=t["~standard"];if(typeof n!="object"||n===null||typeof n.validate!="function")throw new TypeError(aS);let a=await n.validate(e);if(a.issues)throw new Pu(a.issues);return a.value},fc,sS,Ea,Nn,ct,_,Vs,Vi,Gs,Gi,or,Yi,Ys,C,ji,oS,nh,uS,ah,cS,fS,dS,lc,ri,ih,Us,pS,hS,lh,rc,sc,oc,Hs,rh,rr,uc,sr,cc,mS,qs=class qs{constructor(t,n={}){_t(this,C);Y(this,"request");_t(this,Ea);_t(this,Nn,0);_t(this,ct);_t(this,_);_t(this,Vs);_t(this,Vi);_t(this,Gs,new WeakSet);_t(this,Gi);_t(this,or);_t(this,Yi,!1);_t(this,Ys,new WeakMap);var i,l,r,s,o,u,c,f,d,h,b,v,E,m;if(St(this,ct,t),Object.hasOwn(n,"prefixUrl"))throw new Error(gw);if(St(this,_,B(T({},n),{headers:Ip(k(this,ct).headers,n.headers),hooks:ac({},n.hooks),method:J0((l=(i=n.method)!=null?i:k(this,ct).method)!=null?l:"GET"),prefix:String(n.prefix||""),retry:I0(n.retry),throwHttpErrors:(r=n.throwHttpErrors)!=null?r:!0,timeout:(s=n.timeout)!=null?s:1e4,totalTimeout:(o=n.totalTimeout)!=null?o:!1,fetch:(u=n.fetch)!=null?u:globalThis.fetch.bind(globalThis),context:(c=n.context)!=null?c:{}})),typeof k(this,ct)!="string"&&!(k(this,ct)instanceof URL||k(this,ct)instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(typeof k(this,ct)=="string"){if(k(this,_).prefix){let p=k(this,_).prefix.replace(/\/+$/,""),y=k(this,ct).replace(/^\/+/,"");St(this,ct,"".concat(p,"/").concat(y))}if(k(this,_).baseUrl){let p;try{p=new URL(k(this,ct))}catch(y){}p||St(this,ct,new URL(k(this,ct),new Request(k(this,_).baseUrl).url))}}H0&&Wu&&(St(this,Vi,(f=k(this,_).signal)!=null?f:k(this,ct).signal),St(this,Ea,new globalThis.AbortController),k(this,_).signal=H(this,C,ih).call(this)),Zp&&(k(this,_).duplex="half"),k(this,_).json!==void 0&&(k(this,_).body=(b=(h=(d=k(this,_)).stringifyJson)==null?void 0:h.call(d,k(this,_).json))!=null?b:JSON.stringify(k(this,_).json),k(this,_).headers.set("content-type",(v=k(this,_).headers.get("content-type"))!=null?v:"application/json"));let a=n.headers&&new globalThis.Headers(n.headers).has("content-type");if(k(this,ct)instanceof globalThis.Request&&(j0&&k(this,_).body instanceof globalThis.FormData||k(this,_).body instanceof URLSearchParams)&&!a&&k(this,_).headers.delete("content-type"),this.request=new globalThis.Request(k(this,ct),k(this,_)),W0(k(this,_).searchParams)){let p=new URL(this.request.url),y=(E=k(this,_).searchParams)==null?void 0:E[li];if(y)for(let S of y)p.searchParams.delete(S);if(typeof k(this,_).searchParams=="string"){let S=k(this,_).searchParams.replace(/^\?/,"");S!==""&&(p.search=p.search?"".concat(p.search,"&").concat(S):"?".concat(S))}else{let S=new URLSearchParams(H(m=qs,fc,sS).call(m,k(this,_).searchParams));for(let[x,R]of S.entries())p.searchParams.append(x,R)}if(k(this,_).searchParams&&typeof k(this,_).searchParams=="object"&&!Array.isArray(k(this,_).searchParams)&&!(k(this,_).searchParams instanceof URLSearchParams))for(let[S,x]of Object.entries(k(this,_).searchParams))x===void 0&&p.searchParams.delete(S);this.request=new globalThis.Request(p,k(this,_))}if(k(this,_).onUploadProgress&&typeof k(this,_).onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");St(this,or,typeof k(this,_).totalTimeout=="number"?H(this,C,rh).call(this):void 0)}static create(t,n){var o,u,c,f;let a=(u=(o=n.hooks)==null?void 0:o.init)!=null?u:[],i=a.length>0?Sw(n):n;for(let d of a)d(i);let l=new qs(t,i),r=async()=>{var v,E,m,p,y,S,x,R,N,z,D,L,oe;if(typeof k(l,_).timeout=="number"&&k(l,_).timeout>ir)throw new RangeError("The `timeout` option cannot be greater than ".concat(ir));if(typeof k(l,_).totalTimeout=="number"&&k(l,_).totalTimeout>ir)throw new RangeError("The `totalTimeout` option cannot be greater than ".concat(ir));await Promise.resolve();let d=await H(v=l,C,pS).call(v),h=d!=null?d:await H(E=l,C,lh).call(E,async()=>{var K;return H(K=l,C,oc).call(K)}),b=d!==void 0||H(m=l,C,sc).call(m);for(;;){if(h===void 0)return h;if(Bs(h))try{h=await H(p=l,C,hS).call(p,h)}catch(q){if(!(q instanceof qi))throw q;let O=await H(y=l,C,rc).call(y,q,async()=>{var X;return H(X=l,C,oc).call(X)});if(O===void 0)return O;h=O,b=H(S=l,C,sc).call(S);continue}let K=h;if(!K.ok&&K.type!=="opaque"&&(typeof k(l,_).throwHttpErrors=="function"?k(l,_).throwHttpErrors(K.status):k(l,_).throwHttpErrors)){let q=new tr(K,H(x=l,C,sr).call(x,K),H(R=l,C,rr).call(R)),O=q;if(q.data=await H(N=l,C,uS).call(N,K),b)throw O;let X=await H(z=l,C,rc).call(z,q,async()=>{var I;return H(I=l,C,oc).call(I)});if(X===void 0)return X;h=X,b=H(D=l,C,sc).call(D);continue}break}if(!Bs(h))return h;if(H(L=l,C,nh).call(L,h),k(l,_).onDownloadProgress){if(typeof k(l,_).onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!q0)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");let K=h.clone();return H(oe=l,C,ri).call(oe,h),$0(K,k(l,_).onDownloadProgress)}return h},s=(async()=>{var d,h,b,v,E;try{return await r()}catch(m){if(!(m instanceof Error)||k(l,Gs).has(m))throw m;let p=m;for(let y of k(l,_).hooks.beforeError){let S=await y({request:l.request,options:H(d=l,C,rr).call(d),error:p,retryCount:k(l,Nn)});S instanceof Error&&(p=S)}throw p}finally{let m=k(l,Vs);H(b=l,C,lc).call(b,(h=m==null?void 0:m.body)!=null?h:void 0),l.request!==m&&H(E=l,C,lc).call(E,(v=l.request.body)!=null?v:void 0)}})();for(let[d,h]of Object.entries(V0))d==="bytes"&&typeof((f=(c=globalThis.Response)==null?void 0:c.prototype)==null?void 0:f.bytes)!="function"||(s[d]=async b=>{var p;l.request.headers.set("accept",l.request.headers.get("accept")||h);let v=await s;if(d!=="json")return v[d]();let E=await v.text();if(E==="")return b!==void 0?lS(void 0,b):JSON.parse(E);let m=i.parseJson?await i.parseJson(E,{request:H(p=l,C,sr).call(p,v),response:v}):JSON.parse(E);return b===void 0?m:lS(m,b)});return s}};fc=new WeakSet,sS=function(t){return t&&typeof t=="object"&&!Array.isArray(t)&&!(t instanceof URLSearchParams)?Object.fromEntries(Object.entries(t).filter(([,n])=>n!==void 0)):t},Ea=new WeakMap,Nn=new WeakMap,ct=new WeakMap,_=new WeakMap,Vs=new WeakMap,Vi=new WeakMap,Gs=new WeakMap,Gi=new WeakMap,or=new WeakMap,Yi=new WeakMap,Ys=new WeakMap,C=new WeakSet,ji=function(){let t=k(this,_).retry.delay(k(this,Nn)+1),n=t;return k(this,_).retry.jitter===!0?n=Math.random()*t:typeof k(this,_).retry.jitter=="function"&&(n=k(this,_).retry.jitter(t),(!Number.isFinite(n)||n<0)&&(n=t)),Math.min(k(this,_).retry.backoffLimit,n)},oS=async function(t){var a,i,l,r,s;if(k(this,Nn)>=k(this,_).retry.limit)throw t;let n=t instanceof Error?t:new ar(t);if(n instanceof qi)return(a=n.customDelay)!=null?a:H(this,C,ji).call(this);if(!k(this,_).retry.methods.includes(this.request.method.toLowerCase()))throw t;if(k(this,_).retry.shouldRetry!==void 0){let o=await k(this,_).retry.shouldRetry({error:n,retryCount:k(this,Nn)+1});if(o===!1)throw t;if(o===!0)return H(this,C,ji).call(this)}if(nS(t)){if(!k(this,_).retry.retryOnTimeout)throw t;return H(this,C,ji).call(this)}if(eS(t)){if(!k(this,_).retry.statusCodes.includes(t.response.status))throw t;let o=(s=(r=(l=(i=t.response.headers.get("Retry-After"))!=null?i:t.response.headers.get("RateLimit-Reset"))!=null?l:t.response.headers.get("X-RateLimit-Retry-After"))!=null?r:t.response.headers.get("X-RateLimit-Reset"))!=null?s:t.response.headers.get("X-Rate-Limit-Reset");if(o&&k(this,_).retry.afterStatusCodes.includes(t.response.status)){let u=Number(o)*1e3;return Number.isNaN(u)?u=Date.parse(o)-Date.now():u>=Date.parse("2024-01-01")&&(u-=Date.now()),Number.isFinite(u)?(u=Math.max(0,u),Math.min(k(this,_).retry.maxRetryAfter,u)):Math.min(k(this,_).retry.maxRetryAfter,H(this,C,ji).call(this))}if(t.response.status===413)throw t;return H(this,C,ji).call(this)}if(!tS(t))throw t;return H(this,C,ji).call(this)},nh=function(t){let n=H(this,C,sr).call(this,t);return k(this,_).parseJson&&(t.json=async()=>{let a=await t.text();return a===""?JSON.parse(a):k(this,_).parseJson(a,{request:n,response:t})}),t},uS=async function(t){var i;let n=await H(this,C,fS).call(this,t,H(this,C,ah).call(this));if(n===Ls){H(this,C,Us).call(this);return}if(!n)return;if(!H(this,C,cS).call(this,(i=t.headers.get("content-type"))!=null?i:""))return n;let a=await H(this,C,dS).call(this,n,t,H(this,C,ah).call(this),H(this,C,sr).call(this,t));if(a===Ls){H(this,C,Us).call(this);return}return a},ah=function(){let t=k(this,_).timeout===!1?1e4:k(this,_).timeout,n=H(this,C,Hs).call(this);if(n===void 0)return t;if(n<=0)throw new me(this.request);return Math.min(t,n)},cS=function(t){var a;let n=((a=t.split(";",1)[0])!=null?a:"").trim().toLowerCase();return/\/(?:.*[.+-])?json$/.test(n)},fS=async function(t,n){var f;let{body:a}=t;if(!a)try{return await t.text()}catch(d){return}let i;try{i=a.getReader()}catch(d){return}let l=yw((f=t.headers.get("content-type"))!=null?f:""),r=[],s=0,o=(async()=>{try{for(;;){let{done:d,value:h}=await i.read();if(d)break;if(s+=h.byteLength,s>mw){i.cancel().catch(()=>{});return}r.push(l.decode(h,{stream:!0}))}}catch(d){return}return r.push(l.decode()),r.join("")})(),u=new Promise(d=>{let h=setTimeout(()=>{d(Ls)},n);o.finally(()=>{clearTimeout(h)})}),c=await Promise.race([o,u]);return c===Ls&&i.cancel().catch(()=>{}),c},dS=async function(t,n,a,i){let l;try{return await Promise.race([Promise.resolve().then(()=>k(this,_).parseJson?k(this,_).parseJson(t,{request:i,response:n}):JSON.parse(t)),new Promise(r=>{l=setTimeout(()=>{r(Ls)},a)})])}catch(r){return}finally{clearTimeout(l)}},lc=function(t){t&&t.cancel().catch(()=>{})},ri=function(t){var n;H(this,C,lc).call(this,(n=t.body)!=null?n:void 0)},ih=function(){return k(this,Vi)?AbortSignal.any([k(this,Vi),k(this,Ea).signal]):k(this,Ea).signal},Us=function(){let t=H(this,C,Hs).call(this);if(t!==void 0&&t<=0)throw new me(this.request)},pS=async function(){for(let t of k(this,_).hooks.beforeRequest){let n=await t({request:this.request,options:H(this,C,rr).call(this),retryCount:0});if(iS(n))H(this,C,uc).call(this,n);else if(Bs(n))return n}},hS=async function(t){let n=H(this,C,sr).call(this,t);for(let a of k(this,_).hooks.afterResponse){let i=H(this,C,cc).call(this,t.clone(),n);H(this,C,nh).call(this,i);let l;try{l=await a({request:this.request,options:H(this,C,rr).call(this),response:i,retryCount:k(this,Nn)})}catch(s){throw i!==t&&H(this,C,ri).call(this,i),H(this,C,ri).call(this,t),s}if(l instanceof Ds)throw i!==t&&H(this,C,ri).call(this,i),H(this,C,ri).call(this,t),new qi(l.options);let r=Bs(l)?H(this,C,cc).call(this,l,n):t;i!==t&&i!==r&&i.body!==r.body&&H(this,C,ri).call(this,i),t!==r&&t.body!==r.body&&H(this,C,ri).call(this,t),t=r}return t},lh=async function(t){try{return await t()}catch(n){return H(this,C,rc).call(this,n,t)}},rc=async function(t,n){St(this,Yi,!1);let a=Math.min(await H(this,C,oS).call(this,t),ir),i={signal:k(this,Vi)},l=H(this,C,Hs).call(this);if(l!==void 0){if(l<=0)throw new me(this.request);if(a>=l)throw await ic(l,i),new me(this.request)}if(await ic(a,i),H(this,C,Us).call(this),t instanceof qi&&t.customRequest){let r=new globalThis.Request(t.customRequest,k(this,_).signal?{signal:k(this,_).signal}:void 0);H(this,C,uc).call(this,r)}for(let r of k(this,_).hooks.beforeRetry){let s;try{s=await r({request:this.request,options:H(this,C,rr).call(this),error:t,retryCount:k(this,Nn)+1})}catch(o){throw o instanceof Error&&o!==t&&k(this,Gs).add(o),o}if(iS(s)){H(this,C,uc).call(this,s);break}if(Bs(s))return St(this,Yi,!0),jc(this,Nn)._++,s;if(s===tc)return}return H(this,C,Us).call(this),jc(this,Nn)._++,H(this,C,lh).call(this,n)},sc=function(){let t=k(this,Yi);return St(this,Yi,!1),t},oc=async function(){var i,l;(i=k(this,Ea))!=null&&i.signal.aborted&&(St(this,Ea,new globalThis.AbortController),k(this,_).signal=H(this,C,ih).call(this),this.request=new globalThis.Request(this.request,{signal:k(this,_).signal}));let t=P0(k(this,_)),n=k(this,_).retry.limit>0?this.request.clone():void 0,a=H(this,C,mS).call(this,this.request,(l=k(this,_).body)!=null?l:void 0);St(this,Vs,a),n&&(this.request=n);try{let r=H(this,C,Hs).call(this);if(r!==void 0&&r<=0)throw new me(this.request);let s=k(this,_).timeout===!1?r:r===void 0?k(this,_).timeout:Math.min(k(this,_).timeout,r),o=s===void 0?await k(this,_).fetch(a,t):await Wp(a,t,k(this,Ea),{timeout:s,fetch:k(this,_).fetch});return H(this,C,cc).call(this,o,a)}catch(r){throw eh(r)?new nr(this.request,{cause:r}):r}},Hs=function(){if(k(this,or)===void 0)return;let t=H(this,C,rh).call(this)-k(this,or);return Math.max(0,k(this,_).totalTimeout-t)},rh=function(){var t,n;return(n=(t=globalThis.performance)==null?void 0:t.now())!=null?n:Date.now()},rr=function(){if(!k(this,Gi)){let t=k(this,_),{hooks:n,json:a,parseJson:i,stringifyJson:l,searchParams:r,timeout:s,totalTimeout:o,throwHttpErrors:u,fetch:c}=t,f=ta(t,["hooks","json","parseJson","stringifyJson","searchParams","timeout","totalTimeout","throwHttpErrors","fetch"]);St(this,Gi,Object.freeze(f))}return k(this,Gi)},uc=function(t){St(this,Gi,void 0),this.request=t},sr=function(t){var n;return(n=k(this,Ys).get(t))!=null?n:this.request},cc=function(t,n){return k(this,Ys).set(t,n),t},mS=function(t,n){var a;return!k(this,_).onUploadProgress||!t.body||!Zp?t:Z0(t,k(this,_).onUploadProgress,(a=n!=null?n:k(this,_).body)!=null?a:void 0)},_t(qs,fc);var js=qs;var sh=e=>{let t=(n,a)=>js.create(n,zs(e,a));for(let n of ec)t[n]=(a,i)=>js.create(a,zs(e,i,{method:n}));return t.create=n=>sh(zs(n)),t.extend=n=>(typeof n=="function"&&(n=n(e!=null?e:{})),sh(zs(e,n))),t.stop=tc,t.retry=Y0,t},Tw=sh(),gS=Tw;function xw(e){let t=Xe(),n=new Headers(e);return n.set(t.csrfHeaderName,t.csrfToken),n}async function yt(e,t,n={}){var i;return await gS(t,{method:e,headers:xw(n.headers),body:(i=n.body)!=null?i:void 0,throwHttpErrors:!1,timeout:n.timeout})}async function yS(e,t){let n=await yt("PATCH","api/bm/".concat(e.toString(),"/").concat(t),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:n.ok,status:n.status,bodyText:await n.text()}}async function bS(e){let t=await yt("PATCH","api/bm/".concat(e.toString(),"/read"),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function dc(e){let t=await yt("DELETE","api/bm/".concat(e.toString()),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function vS(e){return TS("api/bm/bulkEdit",e)}async function SS(e){return TS("api/note/bulkEdit",e)}async function TS(e,t){var r;let n=await yt("POST",e,{headers:{"content-type":"application/json"},body:JSON.stringify(t),timeout:3e5}),a=(r=n.headers.get("content-type"))!=null?r:"",i,l;if(a.includes("application/json"))try{l=await n.json()}catch(s){l=void 0}else i=await n.text();return{ok:n.ok,status:n.status,bodyText:i,data:l}}async function xS(e){let t=await yt("POST","api/bm/".concat(e.toString(),"/archive"),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function pc(e){let t=await yt("POST","api/add",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function kS(e){let t=await yt("POST","api/note/add",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});if(!t.ok)return{ok:!1,status:t.status,bodyText:await t.text(),note:null};let n=await t.json();return{ok:!0,status:t.status,bodyText:"",note:n}}async function hc(e){let t=await yt("POST","api/lookuptitle",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});return t.status===200?await t.text():null}async function ES(e){let t=Xe().tagCloudR;if(!t)return null;let n=await yt("POST",t,{headers:{"content-type":"application/json"},body:JSON.stringify(e)});if(!n.ok)return null;try{return await n.json()}catch(a){return null}}async function wS(e){await yt("POST","api/tagcloudmode",{headers:{"content-type":"application/json"},body:JSON.stringify(e)})}async function AS(e){let t=await yt("POST","api/tagSuggestions",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});if(!t.ok)return null;try{return await t.json()}catch(n){return null}}async function NS(e){let t=await yt("DELETE","api/note/".concat(e.toString()),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function RS(e){let t=await yt("POST","api/accountSettings",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function OS(){let e=await yt("POST","Settings/apikey");if(e.ok)try{let t=await e.json();return{ok:!0,status:e.status,apiKey:t.apiKey}}catch(t){return{ok:!0,status:e.status}}return{ok:!1,status:e.status,bodyText:await e.text()}}async function CS(){let e=await yt("DELETE","Settings/apikey");return{ok:e.ok,status:e.status,bodyText:await e.text()}}var mc={bookmarksJson:"Settings/export/bookmarks/json",bookmarksHtml:"Settings/export/bookmarks/netscape",notesJson:"Settings/export/notes/json"};async function gc(e,t,n){let a=await yt("POST",e,{headers:{"content-type":t},body:n,timeout:3e5});if(a.ok)try{let i=await a.json();return{ok:!0,status:a.status,imported:i.imported}}catch(i){return{ok:!0,status:a.status}}return{ok:!1,status:a.status,bodyText:await a.text()}}var _S=e=>gc("Settings/import/bookmarks/json","application/json",e),DS=e=>gc("Settings/import/bookmarks/firefox","application/json",e),MS=e=>gc("Settings/import/bookmarks/netscape","text/plain",e),zS=e=>gc("Settings/import/notes/json","application/json",e);async function LS(){let e=Xe();await yt("POST",e.authRlogoutR),window.location.reload()}var Wt=$(ye());var M=$(Le()),ww={account:"Settings",importexport:"Settings/importexport",api:"Settings/api"};function Ks(e){return new URL(ww[e],document.baseURI).pathname}function qS(){let e=window.location.pathname;return e===Ks("importexport")?"importexport":e===Ks("api")?"api":"account"}function jS({initial:e}){let{t}=Ze(),[n,a]=Wt.default.useState(qS);Wt.default.useEffect(()=>{let l=()=>{a(qS())};return window.addEventListener("popstate",l),()=>{window.removeEventListener("popstate",l)}},[]);function i(l,r){return(0,M.jsx)("a",{href:Ks(l),className:"dib link".concat(n===l?" nav-active":" silver hover-alt"),onClick:s=>{s.preventDefault(),window.location.pathname!==Ks(l)&&window.history.pushState(null,"",Ks(l)),a(l)},children:r})}return(0,M.jsxs)("div",{children:[(0,M.jsxs)("div",{className:"mb3",children:[i("account",t("settings.tabAccount"))," \u2027 ",i("importexport",t("settings.tabImportExport"))," \u2027 ",i("api",t("settings.tabApi"))]}),(0,M.jsx)("div",{className:n==="account"?"":"dn",children:(0,M.jsx)(Aw,{initial:e})}),(0,M.jsx)("div",{className:n==="importexport"?"":"dn",children:(0,M.jsx)(Nw,{})}),(0,M.jsx)("div",{className:n==="api"?"":"dn",children:(0,M.jsx)(Rw,{initialHasApiKey:e.hasApiKey})})]})}function Aw({initial:e}){var u;let{t}=Ze(),[n,a]=Wt.default.useState(e),[i,l]=Wt.default.useState(null),r=!n.archiveBackendEnabled,s=r?t("settings.archivingDisabled"):void 0;async function o(c){try{let f=await RS(c);if(!f.ok)return l(ft(t,f.status,f.bodyText)),!1;l(null),a(c);let d=document.getElementById("privacy-lock-icon");return d&&(d.style.display=c.privacyLock?"":"none"),!0}catch(f){return l(f instanceof me?t("error.requestTimedOut"):t("error.networkError")),!1}}return(0,M.jsxs)("div",{className:"settings-form",children:[(0,M.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.groupLanguage")}),(0,M.jsx)("div",{className:"flex items-center mb3",children:(0,M.jsxs)("select",{id:"language",name:"language",className:"pointer","aria-label":t("settings.language"),value:(u=n.language)!=null?u:"",onChange:c=>{let f=B(T({},n),{language:c.target.value===""?null:c.target.value});o(f).then(d=>{d&&window.location.reload()})},children:[(0,M.jsx)("option",{value:"",children:t("settings.serverDefault")}),(0,M.jsx)("option",{value:"en",children:"English"}),(0,M.jsx)("option",{value:"de",children:"Deutsch"}),(0,M.jsx)("option",{value:"es",children:"Espa\xF1ol"}),(0,M.jsx)("option",{value:"fr",children:"Fran\xE7ais"}),(0,M.jsx)("option",{value:"it",children:"Italiano"}),(0,M.jsx)("option",{value:"ja",children:"\u65E5\u672C\u8A9E"}),(0,M.jsx)("option",{value:"ko",children:"\uD55C\uAD6D\uC5B4"}),(0,M.jsx)("option",{value:"pl",children:"Polski"}),(0,M.jsx)("option",{value:"pt-BR",children:"Portugu\xEAs (Brasil)"}),(0,M.jsx)("option",{value:"ru",children:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439"}),(0,M.jsx)("option",{value:"tr",children:"T\xFCrk\xE7e"}),(0,M.jsx)("option",{value:"uk",children:"\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430"}),(0,M.jsx)("option",{value:"zh-Hans",children:"\u7B80\u4F53\u4E2D\u6587"}),(0,M.jsx)("option",{value:"zh-Hant",children:"\u7E41\u9AD4\u4E2D\u6587"})]})}),(0,M.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.groupGeneral")}),(0,M.jsxs)("div",{className:"flex items-center mb2",children:[(0,M.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"suggestTags",name:"suggestTags",checked:n.suggestTags,onChange:c=>{o(B(T({},n),{suggestTags:c.target.checked}))}}),(0,M.jsx)("label",{htmlFor:"suggestTags",className:"lh-copy",children:t("settings.suggestTags")})]}),(0,M.jsxs)("div",{className:"flex items-center mb2",children:[(0,M.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"suggestTagsUseReturnKey",name:"suggestTagsUseReturnKey",checked:n.suggestTagsUseReturnKey,onChange:c=>{o(B(T({},n),{suggestTagsUseReturnKey:c.target.checked}))}}),(0,M.jsx)("label",{htmlFor:"suggestTagsUseReturnKey",className:"lh-copy",children:t("settings.suggestTagsUseReturnKey")})]}),(0,M.jsxs)("div",{className:"flex items-center mb3",children:[(0,M.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"previewNotes",name:"previewNotes",checked:n.previewNotes,onChange:c=>{o(B(T({},n),{previewNotes:c.target.checked}))}}),(0,M.jsx)("label",{htmlFor:"previewNotes",className:"lh-copy",children:t("settings.previewNotes")})]}),(0,M.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.groupArchive")}),(0,M.jsxs)("div",{className:"flex items-center mb3".concat(r?" o-50":""),title:s,children:[(0,M.jsx)("input",{type:"checkbox",className:"mr2".concat(r?"":" pointer"),id:"archiveDefault",name:"archiveDefault",checked:n.archiveDefault,disabled:r,title:s,onChange:c=>{o(B(T({},n),{archiveDefault:c.target.checked}))}}),(0,M.jsx)("label",{htmlFor:"archiveDefault",className:"lh-copy".concat(r?" thm-text-tertiary":""),title:s,children:t("settings.archiveDefault")})]}),(0,M.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.groupPrivacy")}),(0,M.jsxs)("div",{className:"flex items-center mb2",children:[(0,M.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"privateDefault",name:"privateDefault",checked:n.privateDefault,onChange:c=>{o(B(T({},n),{privateDefault:c.target.checked}))}}),(0,M.jsx)("label",{htmlFor:"privateDefault",className:"lh-copy",children:t("settings.privateDefault")})]}),(0,M.jsxs)("div",{className:"flex items-center mb2",children:[(0,M.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"publicTagCloud",name:"publicTagCloud",checked:n.publicTagCloud,onChange:c=>{o(B(T({},n),{publicTagCloud:c.target.checked}))}}),(0,M.jsx)("label",{htmlFor:"publicTagCloud",className:"lh-copy",children:t("settings.publicTagCloud")})]}),(0,M.jsxs)("div",{className:"flex items-center mb2",children:[(0,M.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"privacyLock",name:"privacyLock",checked:n.privacyLock,onChange:c=>{o(B(T({},n),{privacyLock:c.target.checked}))}}),(0,M.jsx)("label",{htmlFor:"privacyLock",className:"lh-copy",children:t("settings.privacyLock")})]}),i?(0,M.jsx)("div",{className:"thm-text-error f7 mt2",children:i}):null]})}function Nw(){let{t:e}=Ze(),[t,n]=Wt.default.useState(null),[a,i]=Wt.default.useState(null),[l,r]=Wt.default.useState(!1);async function s(f,d,h){var b;if(!(!f||f.length===0)){i(null),n(e("settings.importing")),r(!0);try{let v=await Promise.all(Array.from(f).map(p=>p.text())),E;try{E=d(v)}catch(p){n(null),i(e("settings.importParseError"));return}let m=await h(E);m.ok?n(e("settings.imported",{count:(b=m.imported)!=null?b:0})):(n(null),i(e("error.error",{status:m.status})))}catch(v){n(null),i(v instanceof me?e("error.requestTimedOut"):e("error.networkError"))}finally{r(!1)}}}let o=f=>{var d;return(d=f[0])!=null?d:""},u=f=>{let d=[];for(let h of f){let b=JSON.parse(h);Array.isArray(b)?d.push(...b):d.push(b)}return JSON.stringify(d)};function c(f,d,h,b,v=!1){return(0,M.jsxs)("div",{className:"mb2",children:[(0,M.jsx)("div",{className:"mb1",children:f}),(0,M.jsx)("input",{type:"file",accept:d,multiple:v,disabled:l,className:"f7 pointer",onChange:E=>{s(E.target.files,h,b),E.target.value=""}})]})}return(0,M.jsxs)("div",{className:"settings-form",children:[(0,M.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:e("settings.export")}),(0,M.jsx)("div",{className:"mb1",children:(0,M.jsx)("a",{className:"link",href:mc.bookmarksJson,download:!0,children:e("settings.exportBookmarksJson")})}),(0,M.jsx)("div",{className:"mb1",children:(0,M.jsx)("a",{className:"link",href:mc.bookmarksHtml,download:!0,children:e("settings.exportBookmarksHtml")})}),(0,M.jsx)("div",{className:"mb3",children:(0,M.jsx)("a",{className:"link",href:mc.notesJson,download:!0,children:e("settings.exportNotesJson")})}),(0,M.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:e("settings.import")}),c(e("settings.importBookmarksJson"),".json",o,_S),c(e("settings.importFirefoxJson"),".json",o,DS),c(e("settings.importNetscapeHtml"),".html,.htm",o,MS),c(e("settings.importNotesJson"),".json",u,zS,!0),t?(0,M.jsx)("div",{className:"f7 mt2",children:t}):null,a?(0,M.jsx)("div",{className:"thm-text-error f7 mt2",children:a}):null]})}function Rw({initialHasApiKey:e}){let{t}=Ze(),[n,a]=Wt.default.useState(e),[i,l]=Wt.default.useState(null),[r,s]=Wt.default.useState(!1),[o,u]=Wt.default.useState(null),[c,f]=Wt.default.useState(!1);async function d(){var v;u(null),s(!1),f(!0);try{let E=await OS();E.ok&&E.apiKey?(l(E.apiKey),a(!0)):u(ft(t,E.status,(v=E.bodyText)!=null?v:""))}catch(E){u(E instanceof me?t("error.requestTimedOut"):t("error.networkError"))}finally{f(!1)}}async function h(){u(null),f(!0);try{let v=await CS();v.ok?(a(!1),l(null)):u(ft(t,v.status,v.bodyText))}catch(v){u(v instanceof me?t("error.requestTimedOut"):t("error.networkError"))}finally{f(!1)}}async function b(){if(i)try{await navigator.clipboard.writeText(i),s(!0)}catch(v){s(!1)}}return(0,M.jsxs)("div",{className:"settings-form",children:[(0,M.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.apiKeyTitle")}),(0,M.jsx)("div",{className:"mb3 lh-copy",children:t(n?"settings.apiKeyHasKey":"settings.apiKeyNoKey")}),i?(0,M.jsxs)("div",{className:"mb3",children:[(0,M.jsx)("div",{className:"mb1 lh-copy",children:t("settings.apiKeyShownOnce")}),(0,M.jsxs)("div",{className:"flex items-center",children:[(0,M.jsx)("input",{type:"text",readOnly:!0,className:"code f7 pa2 ba thm-border-primary bg-transparent thm-text-strong w-100 mw6",value:i,onFocus:v=>{v.target.select()}}),(0,M.jsx)("a",{href:"#",className:"link ml2",onClick:v=>{v.preventDefault(),b()},children:t(r?"settings.apiKeyCopied":"settings.apiKeyCopy")})]})]}):null,(0,M.jsxs)("div",{className:"flex items-center",children:[(0,M.jsx)("button",{type:"button",disabled:c,className:"ph3 pv2 input-reset thm-text-strong ba thm-border-primary bg-transparent pointer f6 dib dim",onClick:()=>{d()},children:t(n?"settings.apiKeyReset":"settings.apiKeyCreate")}),n?(0,M.jsx)("button",{type:"button",disabled:c,className:"ml3 input-reset bn bg-transparent thm-text-error pointer f6 dib dim",onClick:()=>{h()},children:t("settings.apiKeyRevoke")}):null]}),n?(0,M.jsx)("div",{className:"f7 thm-text-tertiary mt2 lh-copy",children:t("settings.apiKeyResetHint")}):null,o?(0,M.jsx)("div",{className:"thm-text-error f7 mt2",children:o}):null]})}var si=$(ye());var qt=$(ye());var Ow=180;function Ki({enabled:e,useReturnKey:t=!0,tags:n,onTagsUpdate:a,maxSuggestions:i=10}){let[l,r]=qt.default.useState(null),s=qt.default.useRef(0),o=qt.default.useRef(null),u=qt.default.useRef(null),c=qt.default.useCallback(()=>{o.current!=null&&(window.clearTimeout(o.current),o.current=null),s.current+=1},[]),f=qt.default.useCallback(()=>{c(),r(null)},[c]);qt.default.useEffect(()=>()=>{c()},[c]),qt.default.useEffect(()=>{e||f()},[e,f]);let d=qt.default.useCallback(m=>{let{value:p,selectionStart:y,selectionEnd:S}=m.target;if(a(p),!e){f();return}if(y==null||S==null||y!==S){f();return}if(Dw(n,p)){f();return}let x=VS(p,y);if(x==null||x.token.length<2){f();return}let R=Mw(p),N=x.token.toLowerCase(),D=R.filter(oe=>oe===N).length>1,L={query:x.token,currentTags:Array.from(new Set(R.filter(oe=>D||oe!==N)))};c(),o.current=window.setTimeout(()=>{let oe=s.current+1;s.current=oe,(async()=>{let K=await AS(L);if(oe!==s.current||K==null||u.current==null)return;let q=K.suggestions.slice(0,i);if(q.length===0){f();return}let O=Cw(u.current,y);r({items:q,selectedIndex:0,tokenRange:x,anchorLeft:O.left,anchorTop:O.top})})()},Ow)},[c,f,e,i,a]),h=qt.default.useCallback(m=>{let p=u.current;if(p==null||l==null)return;let y=_w(n,l.tokenRange,m);a(y.value),f(),requestAnimationFrame(()=>{p.focus(),p.setSelectionRange(y.caret,y.caret)})},[f,a,l,n]),b=qt.default.useCallback(m=>{if(m.key==="Escape"){l!=null&&(m.preventDefault(),f());return}if(m.key===" "){f();return}if(l!=null){if(m.key==="ArrowDown"){m.preventDefault(),r(p=>p==null?p:B(T({},p),{selectedIndex:(p.selectedIndex+1)%p.items.length}));return}if(m.key==="ArrowUp"){m.preventDefault(),r(p=>p==null?p:B(T({},p),{selectedIndex:(p.selectedIndex-1+p.items.length)%p.items.length}));return}if(m.key==="Tab"||m.key==="Enter"&&t){m.preventDefault();let p=l.items[l.selectedIndex];h(p.term)}}},[h,f,l,t]),v=qt.default.useCallback(m=>{if(l==null)return;let p=m.currentTarget,{selectionStart:y,selectionEnd:S,value:x}=p;if(y==null||S==null||y!==S){f();return}let R=VS(x,y);if(R==null){f();return}R.start!==l.tokenRange.start&&f()},[f,l]),E=qt.default.useCallback(m=>{r(p=>p==null?p:B(T({},p),{selectedIndex:m}))},[]);return{tagInputRef:u,suggestionState:l,closeSuggestions:f,onTagsChange:d,onTagsKeyDown:b,onTagsSelect:v,onSuggestionHover:E,onSuggestionPick:h}}function VS(e,t){let n=Math.max(0,Math.min(t,e.length)),a=n;for(;a>0&&e[a-1]!==" ";)a-=1;let i=n;for(;i<e.length&&e[i]!==" ";)i+=1;let l=e.slice(a,i).trim();return l===""?null:{token:l,start:a,end:i}}function Cw(e,t){let n=window.getComputedStyle(e),a=document.createElement("div");a.style.position="absolute",a.style.visibility="hidden",a.style.whiteSpace="pre",a.style.top="0",a.style.left="0",a.style.font=n.font,a.style.fontKerning=n.fontKerning,a.style.fontFeatureSettings=n.fontFeatureSettings,a.style.fontVariantLigatures=n.fontVariantLigatures,a.style.letterSpacing=n.letterSpacing,a.style.textTransform=n.textTransform,a.style.textIndent=n.textIndent,a.style.boxSizing=n.boxSizing,a.style.padding=n.padding,a.style.border=n.border,a.style.width="".concat(String(e.clientWidth),"px");let i=document.createElement("span");i.textContent=e.value.slice(0,t),a.appendChild(i);let l=document.createElement("span");l.textContent="\u200B",a.appendChild(l),document.body.appendChild(a);let r=l.offsetLeft-e.scrollLeft+1,s=l.offsetTop-e.scrollTop+e.offsetHeight+4;return document.body.removeChild(a),{left:r,top:s}}function _w(e,t,n){let a=e.slice(0,t.start),i=e.slice(t.end).replace(/^ /,""),l="".concat(n," ");return{value:"".concat(a).concat(l).concat(i),caret:a.length+l.length}}function Dw(e,t){if(e===t)return!1;let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n+=1;let a=e.length,i=t.length;for(;a>n&&i>n&&e[a-1]===t[i-1];)a-=1,i-=1;let l=e.slice(n,a),r=t.slice(n,i);return l===""&&r===""?!1:GS(l)&&GS(r)}function GS(e){return e===""||/^ *$/.test(e)}function Mw(e){return e.split(" ").map(t=>t.trim().toLowerCase()).filter(t=>t!=="")}var kC=$(ye()),Xn=$(Le()),YS=80;function Xi({suggestionState:e,onHover:t,onPick:n}){return(0,Xn.jsx)("div",{className:"absolute z-5 thm-bg-secondary thm-text-primary ba thm-border-default br2 shadow-4 overflow-hidden f6",style:{left:e.anchorLeft,top:e.anchorTop,width:"max-content",maxWidth:"22rem"},children:e.items.map((a,i)=>{let l=i===e.selectedIndex,r=Lw(a.term);return(0,Xn.jsxs)("button",{type:"button",className:"flex items-center justify-between w-100 bn bg-transparent tl ph2 pv1 pointer nowrap thm-text-primary thm-hover-link-color ".concat(l?"thm-bg-selected thm-text-selected":""),onMouseEnter:()=>{t(i)},onMouseDown:s=>{s.preventDefault()},onClick:()=>{n(a.term)},title:a.term,children:[(0,Xn.jsx)("span",{className:"mr2",children:zw(r,e.tokenRange.token)}),(0,Xn.jsx)("span",{className:"thm-text-tertiary f6 tr",style:{minWidth:"3ch"},children:a.count})]},"".concat(a.term,"-").concat(a.count.toString()))})})}function zw(e,t){let n=e.toLocaleLowerCase(),a=t.toLocaleLowerCase(),i=n.indexOf(a);if(i<0)return e;let l=e.slice(0,i),r=e.slice(i,i+t.length),s=e.slice(i+t.length);return(0,Xn.jsxs)(Xn.Fragment,{children:[l,(0,Xn.jsx)("strong",{children:r}),s]})}function Lw(e){return e.length<=YS?e:"".concat(e.slice(0,YS),"...")}var V=$(Le());function KS({initial:e}){var q;let{t}=Ze(),n=Xe(),[a,i]=si.default.useState(e),[l,r]=si.default.useState(e),[s,o]=si.default.useState(!1),[u,c]=si.default.useState(!1),[f,d]=si.default.useState(!1),[h,b]=si.default.useState(null),v=n.dat.suggestTags===!0,E=n.dat.suggestTagsUseReturnKey!==!1,m=si.default.useMemo(()=>ol(n.lang,a.time),[n.lang,a.time]),{tagInputRef:p,suggestionState:y,closeSuggestions:S,onTagsChange:x,onTagsKeyDown:R,onTagsSelect:N,onSuggestionHover:z,onSuggestionPick:D}=Ki({enabled:v,useReturnKey:E,tags:l.tags,maxSuggestions:4,onTagsUpdate:O=>{r(X=>B(T({},X),{tags:O}))}});async function L(){c(!0);try{let O=await hc(l);O!=null&&r(X=>B(T({},X),{title:O}))}finally{c(!1)}}async function oe(){let O=await dc(a.bid);if(!O.ok){b(O.bodyText);return}d(!0)}let K=async O=>{O.preventDefault(),b(null);let X=B(T({},l),{tags:aa(l.tags)}),I=await pc(X);if(I.ok&&I.status>=200&&I.status<300){i(X);let ge=Or(),Ae=Cr(ge,"next"),et=document.referrer,ce=window.location.origin;Ae==="closeWindow"?ul(window):Ae==="back"?et.startsWith(ce)?window.location.href=et:window.location.href=ce:ul(window)}else b(I.bodyText)};return f?(0,V.jsx)("p",{className:"thm-text-killed",children:t("addForm.killed")}):(0,V.jsx)("form",{onSubmit:O=>{K(O)},children:(0,V.jsx)("table",{className:"w-100",children:(0,V.jsxs)("tbody",{children:[(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{className:"w1"}),(0,V.jsxs)("td",{children:[a.bid>0?(0,V.jsxs)("div",{className:"alert",children:[t("addForm.previouslySaved"),"\xA0",(0,V.jsx)("span",{className:"link f7 dib thm-text-tertiary thm-hover-link-color pr3","data-time":a.time,title:Ca(n.lang,a.time),children:m}),(0,V.jsx)("div",{className:"edit_links dib ml1",children:(0,V.jsxs)("div",{className:"delete_link di",children:[(0,V.jsx)("button",{type:"button",onClick:()=>{o(!0)},className:"delete",hidden:s,children:t("delete")}),(0,V.jsxs)("span",{className:"confirm thm-text-error",hidden:!s,children:[(0,V.jsxs)("button",{type:"button",onClick:()=>{o(!1)},children:[t("cancel"),"\xA0/\xA0"]}),(0,V.jsx)("button",{type:"button",onClick:()=>{oe()},className:"thm-text-error",children:t("destroy")})]})]})})]}):null,h?(0,V.jsx)("div",{className:"alert alert-err",children:h}):null]})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"url",children:t("addForm.url")})}),(0,V.jsx)("td",{children:(0,V.jsx)("input",{type:"url",id:"url",className:"w-100 mv1",required:!0,name:"url",autoFocus:a.url==="",value:l.url,onChange:O=>{r(X=>B(T({},X),{url:O.target.value}))}})})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"title",children:t("bmark.title")})}),(0,V.jsxs)("td",{className:"flex",children:[(0,V.jsx)("input",{type:"text",id:"title",className:"w-100 mv1 flex-auto",name:"title",value:l.title,onChange:O=>{r(X=>B(T({},X),{title:O.target.value}))}}),(0,V.jsx)("button",{disabled:u,type:"button",onClick:()=>{L()},className:"ml2 input-reset ba thm-border-primary pointer f6 di dim pa1 ma1 mr0".concat(u?" thm-bg-disabled":""),children:t("fetch")})]})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"description",children:t("bmark.description")})}),(0,V.jsx)("td",{children:(0,V.jsx)("textarea",{className:"w-100 mt1 thm-text-secondary",id:"description",name:"description",rows:4,value:l.description,onChange:O=>{r(X=>B(T({},X),{description:O.target.value}))}})})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"tags",children:t("bmark.tags")})}),(0,V.jsx)("td",{children:(0,V.jsxs)("div",{className:"relative",children:[(0,V.jsx)("input",{ref:p,type:"text",id:"tags",className:"w-100 mv1",name:"tags",autoComplete:"off",autoCapitalize:"off",autoFocus:a.url!=="",value:l.tags,onChange:x,onKeyDown:R,onClick:N,onSelect:N,onBlur:()=>{window.setTimeout(()=>{S()},0)}}),y!=null?(0,V.jsx)(Xi,{suggestionState:y,onHover:z,onPick:D}):null]})})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"private",children:t("bmark.private")})}),(0,V.jsxs)("td",{children:[(0,V.jsx)("div",{className:"mr4 dib",children:(0,V.jsx)("input",{type:"checkbox",id:"private",className:"private pointer",name:"private",checked:l.private,onChange:O=>{r(X=>T(B(T({},X),{private:O.target.checked}),n.dat.archiveBackendEnabled&&l.archiveRequested&&O.target.checked?{archiveRequested:!1}:{}))}})}),!(a.bid>0)&&n.dat.archiveBackendEnabled?(0,V.jsxs)("div",{className:"dib ".concat(l.private?"o-50":""),title:l.private?t("addForm.archiveUnavailable"):void 0,children:[(0,V.jsx)("label",{className:"mr2 di",htmlFor:"archiveRequested",children:t("archive")}),(0,V.jsx)("input",{type:"checkbox",id:"archiveRequested",className:"archive pointer ml2",name:"archiveRequested",disabled:l.private,checked:(q=l.archiveRequested)!=null?q:!1,onChange:O=>{r(X=>B(T({},X),{archiveRequested:O.target.checked}))}})]}):null]})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"toread",children:t("addForm.readLater")})}),(0,V.jsx)("td",{children:(0,V.jsx)("input",{type:"checkbox",id:"toread",className:"toread pointer",name:"toread",checked:l.toread,onChange:O=>{r(X=>B(T({},X),{toread:O.target.checked}))}})})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{}),(0,V.jsx)("td",{children:(0,V.jsx)("input",{type:"submit",className:"ph3 pv2 input-reset thm-text-strong ba thm-border-primary bg-transparent pointer f6 dib mt1 dim",value:a.bid>0?t("addForm.update"):t("addForm.add")})})]})]})})})}var Rh=$(ye());var XS=e=>{let t,n=new Set,a=(u,c)=>{let f=typeof u=="function"?u(t):u;if(!Object.is(f,t)){let d=t;t=(c!=null?c:typeof f!="object"||f===null)?f:Object.assign({},t,f),n.forEach(h=>h(t,d))}},i=()=>t,s={setState:a,getState:i,getInitialState:()=>o,subscribe:u=>(n.add(u),()=>n.delete(u))},o=t=e(a,i,s);return s},QS=(e=>e?XS(e):XS);var Xs=$(ye(),1);var Bw=e=>e;function Uw(e,t=Bw){let n=Xs.default.useSyncExternalStore(e.subscribe,Xs.default.useCallback(()=>t(e.getState()),[e,t]),Xs.default.useCallback(()=>t(e.getInitialState()),[e,t]));return Xs.default.useDebugValue(n),n}var $S=e=>{let t=QS(e),n=a=>Uw(t,a);return Object.assign(n,t),n},bc=(e=>e?$S(e):$S);var Qi=bc(e=>({bmarks:[],setAll:t=>{e({bmarks:t})},removeById:t=>{e(n=>({bmarks:n.bmarks.filter(a=>a.bid!==t)}))},upsert:t=>{e(n=>({bmarks:n.bmarks.map(a=>a.bid===t.bid?t:a)}))}}));var en=$(ye());function ZS(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function Hw(e){if(Array.isArray(e))return e}function qw(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var a,i,l,r,s=[],o=!0,u=!1;try{if(l=(n=n.call(e)).next,t!==0)for(;!(o=(a=l.call(n)).done)&&(s.push(a.value),s.length!==t);o=!0);}catch(c){u=!0,i=c}finally{try{if(!o&&n.return!=null&&(r=n.return(),Object(r)!==r))return}finally{if(u)throw i}}return s}}function jw(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Vw(e,t){return Hw(e)||qw(e,t)||Gw(e,t)||jw()}function Gw(e,t){if(e){if(typeof e=="string")return ZS(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ZS(e,t):void 0}}var s1=Object.entries,FS=Object.setPrototypeOf,Yw=Object.isFrozen,Kw=Object.getPrototypeOf,Xw=Object.getOwnPropertyDescriptor,Ot=Object.freeze,yn=Object.seal,dr=Object.create,o1=typeof Reflect<"u"&&Reflect,hh=o1.apply,mh=o1.construct;Ot||(Ot=function(t){return t});yn||(yn=function(t){return t});hh||(hh=function(t,n){for(var a=arguments.length,i=new Array(a>2?a-2:0),l=2;l<a;l++)i[l-2]=arguments[l];return t.apply(n,i)});mh||(mh=function(t){for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return new t(...a)});var ur=We(Array.prototype.forEach),Qw=We(Array.prototype.lastIndexOf),JS=We(Array.prototype.pop),cr=We(Array.prototype.push),$w=We(Array.prototype.splice),Rt=Array.isArray,Zs=We(String.prototype.toLowerCase),uh=We(String.prototype.toString),IS=We(String.prototype.match),fr=We(String.prototype.replace),PS=We(String.prototype.indexOf),Zw=We(String.prototype.trim),Fw=We(Number.prototype.toString),Jw=We(Boolean.prototype.toString),WS=typeof BigInt>"u"?null:We(BigInt.prototype.toString),e1=typeof Symbol>"u"?null:We(Symbol.prototype.toString),Ve=We(Object.prototype.hasOwnProperty),Qs=We(Object.prototype.toString),bt=We(RegExp.prototype.test),$s=Iw(TypeError);function We(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return hh(e,t,a)}}function Iw(e){return function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return mh(e,n)}}function ee(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Zs;if(FS&&FS(e,null),!Rt(t))return e;let a=t.length;for(;a--;){let i=t[a];if(typeof i=="string"){let l=n(i);l!==i&&(Yw(t)||(t[a]=l),i=l)}e[i]=!0}return e}function Pw(e){for(let t=0;t<e.length;t++)Ve(e,t)||(e[t]=null);return e}function kt(e){let t=dr(null);for(let a of s1(e)){var n=Vw(a,2);let i=n[0],l=n[1];Ve(e,i)&&(Rt(l)?t[i]=Pw(l):l&&typeof l=="object"&&l.constructor===Object?t[i]=kt(l):t[i]=l)}return t}function Ww(e){switch(typeof e){case"string":return e;case"number":return Fw(e);case"boolean":return Jw(e);case"bigint":return WS?WS(e):"0";case"symbol":return e1?e1(e):"Symbol()";case"undefined":return Qs(e);case"function":case"object":{if(e===null)return Qs(e);let t=e,n=$n(t,"toString");if(typeof n=="function"){let a=n(t);return typeof a=="string"?a:Qs(a)}return Qs(e)}default:return Qs(e)}}function $n(e,t){for(;e!==null;){let a=Xw(e,t);if(a){if(a.get)return We(a.get);if(typeof a.value=="function")return We(a.value)}e=Kw(e)}function n(){return null}return n}function eA(e){try{return bt(e,""),!0}catch(t){return!1}}var t1=Ot(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ch=Ot(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),fh=Ot(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),tA=Ot(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),dh=Ot(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),nA=Ot(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),n1=Ot(["#text"]),a1=Ot(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),ph=Ot(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),i1=Ot(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),vc=Ot(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),aA=yn(/{{[\w\W]*|^[\w\W]*}}/g),iA=yn(/<%[\w\W]*|^[\w\W]*%>/g),lA=yn(/\${[\w\W]*/g),rA=yn(/^data-[\-\w.\u00B7-\uFFFF]+$/),sA=yn(/^aria-[\-\w]+$/),l1=yn(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),oA=yn(/^(?:\w+script|data):/i),uA=yn(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),cA=yn(/^html$/i),fA=yn(/^[a-z][.\w]*(-[.\w]+)+$/i),Qn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},dA=function(){return typeof window>"u"?null:window},pA=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let a=null,i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(a=n.getAttribute(i));let l="dompurify"+(a?"#"+a:"");try{return t.createPolicy(l,{createHTML(r){return r},createScriptURL(r){return r}})}catch(r){return console.warn("TrustedTypes policy "+l+" could not be created."),null}},r1=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function u1(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:dA(),t=j=>u1(j);if(t.version="3.4.7",t.removed=[],!e||!e.document||e.document.nodeType!==Qn.document||!e.Element)return t.isSupported=!1,t;let n=e.document,a=n,i=a.currentScript;e.DocumentFragment;let l=e.HTMLTemplateElement,r=e.Node,s=e.Element,o=e.NodeFilter,u=e.NamedNodeMap;u===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let c=e.DOMParser,f=e.trustedTypes,d=s.prototype,h=$n(d,"cloneNode"),b=$n(d,"remove"),v=$n(d,"nextSibling"),E=$n(d,"childNodes"),m=$n(d,"parentNode"),p=$n(d,"shadowRoot"),y=$n(d,"attributes"),S=r&&r.prototype?$n(r.prototype,"nodeType"):null,x=r&&r.prototype?$n(r.prototype,"nodeName"):null;if(typeof l=="function"){let j=n.createElement("template");j.content&&j.content.ownerDocument&&(n=j.content.ownerDocument)}let R,N="",z=n,D=z.implementation,L=z.createNodeIterator,oe=z.createDocumentFragment,K=z.getElementsByTagName,q=a.importNode,O=r1();t.isSupported=typeof s1=="function"&&typeof m=="function"&&D&&D.createHTMLDocument!==void 0;let X=aA,I=iA,ge=lA,Ae=rA,et=sA,ce=oA,Se=uA,tt=fA,Ge=l1,Te=null,Cn=ee({},[...t1,...ch,...fh,...dh,...n1]),Re=null,fi=ee({},[...a1,...ph,...i1,...vc]),Oe=Object.seal(dr(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),_n=null,In=null,tn=Object.seal(dr(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Wi=!0,Aa=!0,Na=!1,G=!0,te=!1,Ye=!0,nn=!1,Pn=!1,gr=!1,Ct=!1,di=!1,pi=!1,yr=!0,br=!1,Be="user-content-",an=!0,bn=!1,vn={},Vt=null,Wn=ee({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),zh=null,Lh=ee({},["audio","video","img","source","image","track"]),Oc=null,Bh=ee({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ps="http://www.w3.org/1998/Math/MathML",Ws="http://www.w3.org/2000/svg",Dn="http://www.w3.org/1999/xhtml",el=Dn,Cc=!1,_c=null,K1=ee({},[Ps,Ws,Dn],uh),Dc=ee({},["mi","mo","mn","ms","mtext"]),Mc=ee({},["annotation-xml"]),X1=ee({},["title","style","font","a","script"]),vr=null,Q1=["application/xhtml+xml","text/html"],$1="text/html",Ke=null,tl=null,Z1=n.createElement("form"),Uh=function(g){return g instanceof RegExp||g instanceof Function},zc=function(){let g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(tl&&tl===g)return;(!g||typeof g!="object")&&(g={}),g=kt(g),vr=Q1.indexOf(g.PARSER_MEDIA_TYPE)===-1?$1:g.PARSER_MEDIA_TYPE,Ke=vr==="application/xhtml+xml"?uh:Zs,Te=Ve(g,"ALLOWED_TAGS")&&Rt(g.ALLOWED_TAGS)?ee({},g.ALLOWED_TAGS,Ke):Cn,Re=Ve(g,"ALLOWED_ATTR")&&Rt(g.ALLOWED_ATTR)?ee({},g.ALLOWED_ATTR,Ke):fi,_c=Ve(g,"ALLOWED_NAMESPACES")&&Rt(g.ALLOWED_NAMESPACES)?ee({},g.ALLOWED_NAMESPACES,uh):K1,Oc=Ve(g,"ADD_URI_SAFE_ATTR")&&Rt(g.ADD_URI_SAFE_ATTR)?ee(kt(Bh),g.ADD_URI_SAFE_ATTR,Ke):Bh,zh=Ve(g,"ADD_DATA_URI_TAGS")&&Rt(g.ADD_DATA_URI_TAGS)?ee(kt(Lh),g.ADD_DATA_URI_TAGS,Ke):Lh,Vt=Ve(g,"FORBID_CONTENTS")&&Rt(g.FORBID_CONTENTS)?ee({},g.FORBID_CONTENTS,Ke):Wn,_n=Ve(g,"FORBID_TAGS")&&Rt(g.FORBID_TAGS)?ee({},g.FORBID_TAGS,Ke):kt({}),In=Ve(g,"FORBID_ATTR")&&Rt(g.FORBID_ATTR)?ee({},g.FORBID_ATTR,Ke):kt({}),vn=Ve(g,"USE_PROFILES")?g.USE_PROFILES&&typeof g.USE_PROFILES=="object"?kt(g.USE_PROFILES):g.USE_PROFILES:!1,Wi=g.ALLOW_ARIA_ATTR!==!1,Aa=g.ALLOW_DATA_ATTR!==!1,Na=g.ALLOW_UNKNOWN_PROTOCOLS||!1,G=g.ALLOW_SELF_CLOSE_IN_ATTR!==!1,te=g.SAFE_FOR_TEMPLATES||!1,Ye=g.SAFE_FOR_XML!==!1,nn=g.WHOLE_DOCUMENT||!1,Ct=g.RETURN_DOM||!1,di=g.RETURN_DOM_FRAGMENT||!1,pi=g.RETURN_TRUSTED_TYPE||!1,gr=g.FORCE_BODY||!1,yr=g.SANITIZE_DOM!==!1,br=g.SANITIZE_NAMED_PROPS||!1,an=g.KEEP_CONTENT!==!1,bn=g.IN_PLACE||!1,Ge=eA(g.ALLOWED_URI_REGEXP)?g.ALLOWED_URI_REGEXP:l1,el=typeof g.NAMESPACE=="string"?g.NAMESPACE:Dn,Dc=Ve(g,"MATHML_TEXT_INTEGRATION_POINTS")&&g.MATHML_TEXT_INTEGRATION_POINTS&&typeof g.MATHML_TEXT_INTEGRATION_POINTS=="object"?kt(g.MATHML_TEXT_INTEGRATION_POINTS):ee({},["mi","mo","mn","ms","mtext"]),Mc=Ve(g,"HTML_INTEGRATION_POINTS")&&g.HTML_INTEGRATION_POINTS&&typeof g.HTML_INTEGRATION_POINTS=="object"?kt(g.HTML_INTEGRATION_POINTS):ee({},["annotation-xml"]);let w=Ve(g,"CUSTOM_ELEMENT_HANDLING")&&g.CUSTOM_ELEMENT_HANDLING&&typeof g.CUSTOM_ELEMENT_HANDLING=="object"?kt(g.CUSTOM_ELEMENT_HANDLING):dr(null);if(Oe=dr(null),Ve(w,"tagNameCheck")&&Uh(w.tagNameCheck)&&(Oe.tagNameCheck=w.tagNameCheck),Ve(w,"attributeNameCheck")&&Uh(w.attributeNameCheck)&&(Oe.attributeNameCheck=w.attributeNameCheck),Ve(w,"allowCustomizedBuiltInElements")&&typeof w.allowCustomizedBuiltInElements=="boolean"&&(Oe.allowCustomizedBuiltInElements=w.allowCustomizedBuiltInElements),te&&(Aa=!1),di&&(Ct=!0),vn&&(Te=ee({},n1),Re=dr(null),vn.html===!0&&(ee(Te,t1),ee(Re,a1)),vn.svg===!0&&(ee(Te,ch),ee(Re,ph),ee(Re,vc)),vn.svgFilters===!0&&(ee(Te,fh),ee(Re,ph),ee(Re,vc)),vn.mathMl===!0&&(ee(Te,dh),ee(Re,i1),ee(Re,vc))),tn.tagCheck=null,tn.attributeCheck=null,Ve(g,"ADD_TAGS")&&(typeof g.ADD_TAGS=="function"?tn.tagCheck=g.ADD_TAGS:Rt(g.ADD_TAGS)&&(Te===Cn&&(Te=kt(Te)),ee(Te,g.ADD_TAGS,Ke))),Ve(g,"ADD_ATTR")&&(typeof g.ADD_ATTR=="function"?tn.attributeCheck=g.ADD_ATTR:Rt(g.ADD_ATTR)&&(Re===fi&&(Re=kt(Re)),ee(Re,g.ADD_ATTR,Ke))),Ve(g,"ADD_URI_SAFE_ATTR")&&Rt(g.ADD_URI_SAFE_ATTR)&&ee(Oc,g.ADD_URI_SAFE_ATTR,Ke),Ve(g,"FORBID_CONTENTS")&&Rt(g.FORBID_CONTENTS)&&(Vt===Wn&&(Vt=kt(Vt)),ee(Vt,g.FORBID_CONTENTS,Ke)),Ve(g,"ADD_FORBID_CONTENTS")&&Rt(g.ADD_FORBID_CONTENTS)&&(Vt===Wn&&(Vt=kt(Vt)),ee(Vt,g.ADD_FORBID_CONTENTS,Ke)),an&&(Te["#text"]=!0),nn&&ee(Te,["html","head","body"]),Te.table&&(ee(Te,["tbody"]),delete _n.tbody),g.TRUSTED_TYPES_POLICY){if(typeof g.TRUSTED_TYPES_POLICY.createHTML!="function")throw $s('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof g.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw $s('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');R=g.TRUSTED_TYPES_POLICY,N=R.createHTML("")}else R===void 0&&(R=pA(f,i)),R!==null&&typeof N=="string"&&(N=R.createHTML(""));(O.uponSanitizeElement.length>0||O.uponSanitizeAttribute.length>0)&&Te===Cn&&(Te=kt(Te)),O.uponSanitizeAttribute.length>0&&Re===fi&&(Re=kt(Re)),Ot&&Ot(g),tl=g},Hh=ee({},[...ch,...fh,...tA]),qh=ee({},[...dh,...nA]),F1=function(g){let w=m(g);(!w||!w.tagName)&&(w={namespaceURI:el,tagName:"template"});let U=Zs(g.tagName),he=Zs(w.tagName);return _c[g.namespaceURI]?g.namespaceURI===Ws?w.namespaceURI===Dn?U==="svg":w.namespaceURI===Ps?U==="svg"&&(he==="annotation-xml"||Dc[he]):!!Hh[U]:g.namespaceURI===Ps?w.namespaceURI===Dn?U==="math":w.namespaceURI===Ws?U==="math"&&Mc[he]:!!qh[U]:g.namespaceURI===Dn?w.namespaceURI===Ws&&!Mc[he]||w.namespaceURI===Ps&&!Dc[he]?!1:!qh[U]&&(X1[U]||!Hh[U]):!!(vr==="application/xhtml+xml"&&_c[g.namespaceURI]):!1},Sn=function(g){cr(t.removed,{element:g});try{m(g).removeChild(g)}catch(w){b(g)}},hi=function(g,w){try{cr(t.removed,{attribute:w.getAttributeNode(g),from:w})}catch(U){cr(t.removed,{attribute:null,from:w})}if(w.removeAttribute(g),g==="is")if(Ct||di)try{Sn(w)}catch(U){}else try{w.setAttribute(g,"")}catch(U){}},jh=function(g){let w=null,U=null;if(gr)g="<remove></remove>"+g;else{let Ce=IS(g,/^[\r\n\t ]+/);U=Ce&&Ce[0]}vr==="application/xhtml+xml"&&el===Dn&&(g='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+g+"</body></html>");let he=R?R.createHTML(g):g;if(el===Dn)try{w=new c().parseFromString(he,vr)}catch(Ce){}if(!w||!w.documentElement){w=D.createDocument(el,"template",null);try{w.documentElement.innerHTML=Cc?N:he}catch(Ce){}}let le=w.body||w.documentElement;return g&&U&&le.insertBefore(n.createTextNode(U),le.childNodes[0]||null),el===Dn?K.call(w,nn?"html":"body")[0]:nn?w.documentElement:le},Vh=function(g){return L.call(g.ownerDocument||g,g,o.SHOW_ELEMENT|o.SHOW_COMMENT|o.SHOW_TEXT|o.SHOW_PROCESSING_INSTRUCTION|o.SHOW_CDATA_SECTION,null)},Gh=function(g){g.normalize();let w=L.call(g.ownerDocument||g,g,o.SHOW_TEXT|o.SHOW_COMMENT|o.SHOW_CDATA_SECTION|o.SHOW_PROCESSING_INSTRUCTION,null),U=w.nextNode();for(;U;){let he=U.data;ur([X,I,ge],le=>{he=fr(he,le," ")}),U.data=he,U=w.nextNode()}},eo=function(g){let w=x?x(g):null;return typeof w!="string"||Ke(w)!=="form"?!1:typeof g.nodeName!="string"||typeof g.textContent!="string"||typeof g.removeChild!="function"||g.attributes!==y(g)||typeof g.removeAttribute!="function"||typeof g.setAttribute!="function"||typeof g.namespaceURI!="string"||typeof g.insertBefore!="function"||typeof g.hasChildNodes!="function"||g.nodeType!==S(g)||g.childNodes!==E(g)},Sr=function(g){if(!S||typeof g!="object"||g===null)return!1;try{return S(g)===Qn.documentFragment}catch(w){return!1}},to=function(g){if(!S||typeof g!="object"||g===null)return!1;try{return typeof S(g)=="number"}catch(w){return!1}};function ea(j,g,w){ur(j,U=>{U.call(t,g,w,tl)})}let Yh=function(g){let w=null;if(ea(O.beforeSanitizeElements,g,null),eo(g))return Sn(g),!0;let U=Ke(g.nodeName);if(ea(O.uponSanitizeElement,g,{tagName:U,allowedTags:Te}),Ye&&g.hasChildNodes()&&!to(g.firstElementChild)&&bt(/<[/\w!]/g,g.innerHTML)&&bt(/<[/\w!]/g,g.textContent)||Ye&&g.namespaceURI===Dn&&U==="style"&&to(g.firstElementChild)||g.nodeType===Qn.progressingInstruction||Ye&&g.nodeType===Qn.comment&&bt(/<[/\w]/g,g.data))return Sn(g),!0;if(_n[U]||!(tn.tagCheck instanceof Function&&tn.tagCheck(U))&&!Te[U]){if(!_n[U]&&Xh(U)&&(Oe.tagNameCheck instanceof RegExp&&bt(Oe.tagNameCheck,U)||Oe.tagNameCheck instanceof Function&&Oe.tagNameCheck(U)))return!1;if(an&&!Vt[U]){let le=m(g),Ce=E(g);if(Ce&&le){let ln=Ce.length;for(let Mn=ln-1;Mn>=0;--Mn){let Tn=h(Ce[Mn],!0);le.insertBefore(Tn,v(g))}}}return Sn(g),!0}return(S?S(g):g.nodeType)===Qn.element&&!F1(g)||(U==="noscript"||U==="noembed"||U==="noframes")&&bt(/<\/no(script|embed|frames)/i,g.innerHTML)?(Sn(g),!0):(te&&g.nodeType===Qn.text&&(w=g.textContent,ur([X,I,ge],le=>{w=fr(w,le," ")}),g.textContent!==w&&(cr(t.removed,{element:g.cloneNode()}),g.textContent=w)),ea(O.afterSanitizeElements,g,null),!1)},Kh=function(g,w,U){if(In[w]||yr&&(w==="id"||w==="name")&&(U in n||U in Z1))return!1;let he=Re[w]||tn.attributeCheck instanceof Function&&tn.attributeCheck(w,g);if(!(Aa&&!In[w]&&bt(Ae,w))){if(!(Wi&&bt(et,w))){if(!he||In[w]){if(!(Xh(g)&&(Oe.tagNameCheck instanceof RegExp&&bt(Oe.tagNameCheck,g)||Oe.tagNameCheck instanceof Function&&Oe.tagNameCheck(g))&&(Oe.attributeNameCheck instanceof RegExp&&bt(Oe.attributeNameCheck,w)||Oe.attributeNameCheck instanceof Function&&Oe.attributeNameCheck(w,g))||w==="is"&&Oe.allowCustomizedBuiltInElements&&(Oe.tagNameCheck instanceof RegExp&&bt(Oe.tagNameCheck,U)||Oe.tagNameCheck instanceof Function&&Oe.tagNameCheck(U))))return!1}else if(!Oc[w]){if(!bt(Ge,fr(U,Se,""))){if(!((w==="src"||w==="xlink:href"||w==="href")&&g!=="script"&&PS(U,"data:")===0&&zh[g])){if(!(Na&&!bt(ce,fr(U,Se,"")))){if(U)return!1}}}}}}return!0},J1=ee({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Xh=function(g){return!J1[Zs(g)]&&bt(tt,g)},Qh=function(g){ea(O.beforeSanitizeAttributes,g,null);let w=g.attributes;if(!w||eo(g))return;let U={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Re,forceKeepAttr:void 0},he=w.length;for(;he--;){let le=w[he],Ce=le.name,ln=le.namespaceURI,Mn=le.value,Tn=Ke(Ce),Lc=Mn,lt=Ce==="value"?Lc:Zw(Lc);if(U.attrName=Tn,U.attrValue=lt,U.keepAttr=!0,U.forceKeepAttr=void 0,ea(O.uponSanitizeAttribute,g,U),lt=U.attrValue,br&&(Tn==="id"||Tn==="name")&&PS(lt,Be)!==0&&(hi(Ce,g),lt=Be+lt),Ye&&bt(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,lt)){hi(Ce,g);continue}if(Tn==="attributename"&&IS(lt,"href")){hi(Ce,g);continue}if(U.forceKeepAttr)continue;if(!U.keepAttr){hi(Ce,g);continue}if(!G&&bt(/\/>/i,lt)){hi(Ce,g);continue}te&&ur([X,I,ge],Zh=>{lt=fr(lt,Zh," ")});let $h=Ke(g.nodeName);if(!Kh($h,Tn,lt)){hi(Ce,g);continue}if(R&&typeof f=="object"&&typeof f.getAttributeType=="function"&&!ln)switch(f.getAttributeType($h,Tn)){case"TrustedHTML":{lt=R.createHTML(lt);break}case"TrustedScriptURL":{lt=R.createScriptURL(lt);break}}if(lt!==Lc)try{ln?g.setAttributeNS(ln,Ce,lt):g.setAttribute(Ce,lt),eo(g)?Sn(g):JS(t.removed)}catch(Zh){hi(Ce,g)}}ea(O.afterSanitizeAttributes,g,null)},no=function(g){let w=null,U=Vh(g);for(ea(O.beforeSanitizeShadowDOM,g,null);w=U.nextNode();)if(ea(O.uponSanitizeShadowNode,w,null),Yh(w),Qh(w),Sr(w.content)&&no(w.content),(S?S(w):w.nodeType)===Qn.element){let le=p?p(w):w.shadowRoot;Sr(le)&&(nl(le),no(le))}ea(O.afterSanitizeShadowDOM,g,null)},nl=function(g){let w=S?S(g):g.nodeType;if(w===Qn.element){let le=p?p(g):g.shadowRoot;Sr(le)&&(nl(le),no(le))}let U=E?E(g):g.childNodes;if(!U)return;let he=[];ur(U,le=>{cr(he,le)});for(let le of he)nl(le);if(w===Qn.element){let le=x?x(g):null;if(typeof le=="string"&&Ke(le)==="template"){let Ce=g.content;Sr(Ce)&&nl(Ce)}}};return t.sanitize=function(j){let g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},w=null,U=null,he=null,le=null;if(Cc=!j,Cc&&(j="<!-->"),typeof j!="string"&&!to(j)&&(j=Ww(j),typeof j!="string"))throw $s("dirty is not a string, aborting");if(!t.isSupported)return j;if(Pn||zc(g),t.removed=[],typeof j=="string"&&(bn=!1),bn){let Mn=x?x(j):j.nodeName;if(typeof Mn=="string"){let Tn=Ke(Mn);if(!Te[Tn]||_n[Tn])throw $s("root node is forbidden and cannot be sanitized in-place")}if(eo(j))throw $s("root node is clobbered and cannot be sanitized in-place");nl(j)}else if(to(j))w=jh("<!---->"),U=w.ownerDocument.importNode(j,!0),U.nodeType===Qn.element&&U.nodeName==="BODY"||U.nodeName==="HTML"?w=U:w.appendChild(U),nl(U);else{if(!Ct&&!te&&!nn&&j.indexOf("<")===-1)return R&&pi?R.createHTML(j):j;if(w=jh(j),!w)return Ct?null:pi?N:""}w&&gr&&Sn(w.firstChild);let Ce=Vh(bn?j:w);for(;he=Ce.nextNode();)Yh(he),Qh(he),Sr(he.content)&&no(he.content);if(bn)return te&&Gh(j),j;if(Ct){if(te&&Gh(w),di)for(le=oe.call(w.ownerDocument);w.firstChild;)le.appendChild(w.firstChild);else le=w;return(Re.shadowroot||Re.shadowrootmode)&&(le=q.call(a,le,!0)),le}let ln=nn?w.outerHTML:w.innerHTML;return nn&&Te["!doctype"]&&w.ownerDocument&&w.ownerDocument.doctype&&w.ownerDocument.doctype.name&&bt(cA,w.ownerDocument.doctype.name)&&(ln="<!DOCTYPE "+w.ownerDocument.doctype.name+">\n"+ln),te&&ur([X,I,ge],Mn=>{ln=fr(ln,Mn," ")}),R&&pi?R.createHTML(ln):ln},t.setConfig=function(){let j=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};zc(j),Pn=!0},t.clearConfig=function(){tl=null,Pn=!1},t.isValidAttribute=function(j,g,w){tl||zc({});let U=Ke(j),he=Ke(g);return Kh(U,he,w)},t.addHook=function(j,g){typeof g=="function"&&cr(O[j],g)},t.removeHook=function(j,g){if(g!==void 0){let w=Qw(O[j],g);return w===-1?void 0:$w(O[j],w,1)[0]}return JS(O[j])},t.removeHooks=function(j){O[j]=[]},t.removeAllHooks=function(){O=r1()},t}var c1=u1();function vh(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Fi=vh();function b1(e){Fi=e}var $i={exec:()=>null};function pr(e){let t=[];return n=>{let a=Math.max(0,Math.min(3,n-1)),i=t[a];return i||(i=e(a),t[a]=i),i}}function ue(e,t=""){let n=typeof e=="string"?e:e.source,a={replace:(i,l)=>{let r=typeof l=="string"?l:l.source;return r=r.replace(Et.caret,"$1"),n=n.replace(i,r),a},getRegex:()=>new RegExp(n,t)};return a}var hA=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch(t){return!1}})(),Et={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp("^( {0,3}".concat(e,")((?:[ ][^\\n]*)?(?:\\n|$))")),nextBulletRegex:pr(e=>new RegExp("^ {0,".concat(e,"}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))"))),hrRegex:pr(e=>new RegExp("^ {0,".concat(e,"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"))),fencesBeginRegex:pr(e=>new RegExp("^ {0,".concat(e,"}(?:```|~~~)"))),headingBeginRegex:pr(e=>new RegExp("^ {0,".concat(e,"}#"))),htmlBeginRegex:pr(e=>new RegExp("^ {0,".concat(e,"}<(?:[a-z].*>|!--)"),"i")),blockquoteBeginRegex:pr(e=>new RegExp("^ {0,".concat(e,"}>")))},mA=/^(?:[ \t]*(?:\n|$))+/,gA=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,yA=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Is=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,bA=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Sh=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,v1=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,S1=ue(v1).replace(/bull/g,Sh).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),vA=ue(v1).replace(/bull/g,Sh).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Th=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,SA=/^[^\n]+/,xh=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,TA=ue(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",xh).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),xA=ue(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Sh).getRegex(),wc="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",kh=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,kA=ue("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",kh).replace("tag",wc).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),T1=ue(Th).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wc).getRegex(),EA=ue(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",T1).getRegex(),Eh={blockquote:EA,code:gA,def:TA,fences:yA,heading:bA,hr:Is,html:kA,lheading:S1,list:xA,newline:mA,paragraph:T1,table:$i,text:SA},f1=ue("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wc).getRegex(),wA=B(T({},Eh),{lheading:vA,table:f1,paragraph:ue(Th).replace("hr",Is).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",f1).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",wc).getRegex()}),AA=B(T({},Eh),{html:ue("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",kh).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:$i,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ue(Th).replace("hr",Is).replace("heading"," *#{1,6} *[^\n]").replace("lheading",S1).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()}),NA=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,RA=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,x1=/^( {2,}|\\)\n(?!\s*$)/,OA=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,hr=/[\p{P}\p{S}]/u,Ac=/[\s\p{P}\p{S}]/u,wh=/[^\s\p{P}\p{S}]/u,CA=ue(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Ac).getRegex(),k1=/(?!~)[\p{P}\p{S}]/u,_A=/(?!~)[\s\p{P}\p{S}]/u,DA=/(?:[^\s\p{P}\p{S}]|~)/u,MA=ue(/link|precode-code|html/,"g").replace("link",new RegExp("\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)")).replace("precode-",hA?"(?<!`)()":"(^^|[^`])").replace("code",new RegExp("(?<b>`+)[^`]+\\k<b>(?!`)")).replace("html",/<(?! )[^<>]*?>/).getRegex(),E1=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,zA=ue(E1,"u").replace(/punct/g,hr).getRegex(),LA=ue(E1,"u").replace(/punct/g,k1).getRegex(),w1="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",BA=ue(w1,"gu").replace(/notPunctSpace/g,wh).replace(/punctSpace/g,Ac).replace(/punct/g,hr).getRegex(),UA=ue(w1,"gu").replace(/notPunctSpace/g,DA).replace(/punctSpace/g,_A).replace(/punct/g,k1).getRegex(),HA=ue("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,wh).replace(/punctSpace/g,Ac).replace(/punct/g,hr).getRegex(),qA=ue(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,hr).getRegex(),jA="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",VA=ue(jA,"gu").replace(/notPunctSpace/g,wh).replace(/punctSpace/g,Ac).replace(/punct/g,hr).getRegex(),GA=ue(/\\(punct)/,"gu").replace(/punct/g,hr).getRegex(),YA=ue(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),KA=ue(kh).replace("(?:-->|$)","-->").getRegex(),XA=ue("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",KA).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),xc=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,QA=ue(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",xc).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),A1=ue(/^!?\[(label)\]\[(ref)\]/).replace("label",xc).replace("ref",xh).getRegex(),N1=ue(/^!?\[(ref)\](?:\[\])?/).replace("ref",xh).getRegex(),$A=ue("reflink|nolink(?!\\()","g").replace("reflink",A1).replace("nolink",N1).getRegex(),d1=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ah={_backpedal:$i,anyPunctuation:GA,autolink:YA,blockSkip:MA,br:x1,code:RA,del:$i,delLDelim:$i,delRDelim:$i,emStrongLDelim:zA,emStrongRDelimAst:BA,emStrongRDelimUnd:HA,escape:NA,link:QA,nolink:N1,punctuation:CA,reflink:A1,reflinkSearch:$A,tag:XA,text:OA,url:$i},ZA=B(T({},Ah),{link:ue(/^!?\[(label)\]\((.*?)\)/).replace("label",xc).getRegex(),reflink:ue(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",xc).getRegex()}),gh=B(T({},Ah),{emStrongRDelimAst:UA,emStrongLDelim:LA,delLDelim:qA,delRDelim:VA,url:ue(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",d1).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:ue(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",d1).getRegex()}),FA=B(T({},gh),{br:ue(x1).replace("{2,}","*").getRegex(),text:ue(gh.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()}),Sc={normal:Eh,gfm:wA,pedantic:AA},Fs={normal:Ah,gfm:gh,breaks:FA,pedantic:ZA},JA={"&":"&","<":"<",">":">",'"':""","'":"'"},p1=e=>JA[e];function Zn(e,t){if(t){if(Et.escapeTest.test(e))return e.replace(Et.escapeReplace,p1)}else if(Et.escapeTestNoEncode.test(e))return e.replace(Et.escapeReplaceNoEncode,p1);return e}function h1(e){try{e=encodeURI(e).replace(Et.percentDecode,"%")}catch(t){return null}return e}function m1(e,t){var l;let n=e.replace(Et.findPipe,(r,s,o)=>{let u=!1,c=s;for(;--c>=0&&o[c]==="\\";)u=!u;return u?"|":" |"}),a=n.split(Et.splitPipe),i=0;if(a[0].trim()||a.shift(),a.length>0&&!((l=a.at(-1))!=null&&l.trim())&&a.pop(),t)if(a.length>t)a.splice(t);else for(;a.length<t;)a.push("");for(;i<a.length;i++)a[i]=a[i].trim().replace(Et.slashPipe,"|");return a}function oi(e,t,n){let a=e.length;if(a===0)return"";let i=0;for(;i<a;){let l=e.charAt(a-i-1);if(l===t&&!n)i++;else if(l!==t&&n)i++;else break}return e.slice(0,a-i)}function g1(e){let t=e.split("\n"),n=t.length-1;for(;n>=0&&Et.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join("\n")}function IA(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let a=0;a<e.length;a++)if(e[a]==="\\")a++;else if(e[a]===t[0])n++;else if(e[a]===t[1]&&(n--,n<0))return a;return n>0?-2:-1}function PA(e,t=0){let n=t,a="";for(let i of e)if(i===" "){let l=4-n%4;a+=" ".repeat(l),n+=l}else a+=i,n++;return a}function y1(e,t,n,a,i){let l=t.href,r=t.title||null,s=e[1].replace(i.other.outputLinkReplace,"$1");a.state.inLink=!0;let o={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:l,title:r,text:s,tokens:a.inlineTokens(s)};return a.state.inLink=!1,o}function WA(e,t,n){let a=e.match(n.other.indentCodeCompensation);if(a===null)return t;let i=a[1];return t.split("\n").map(l=>{let r=l.match(n.other.beginningSpace);if(r===null)return l;let[s]=r;return s.length>=i.length?l.slice(i.length):l}).join("\n")}var kc=class{constructor(e){Y(this,"options");Y(this,"rules");Y(this,"lexer");this.options=e||Fi}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:g1(t[0]),a=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:a}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],a=WA(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:a}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let a=oi(n,"#");(this.options.pedantic||!a||this.rules.other.endingSpaceChar.test(a))&&(n=a.trim())}return{type:"heading",raw:oi(t[0],"\n"),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:oi(t[0],"\n")}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=oi(t[0],"\n").split("\n"),a="",i="",l=[];for(;n.length>0;){let r=!1,s=[],o;for(o=0;o<n.length;o++)if(this.rules.other.blockquoteStart.test(n[o]))s.push(n[o]),r=!0;else if(!r)s.push(n[o]);else break;n=n.slice(o);let u=s.join("\n"),c=u.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");a=a?"".concat(a,"\n").concat(u):u,i=i?"".concat(i,"\n").concat(c):c;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,l,!0),this.lexer.state.top=f,n.length===0)break;let d=l.at(-1);if((d==null?void 0:d.type)==="code")break;if((d==null?void 0:d.type)==="blockquote"){let h=d,b=h.raw+"\n"+n.join("\n"),v=this.blockquote(b);l[l.length-1]=v,a=a.substring(0,a.length-h.raw.length)+v.raw,i=i.substring(0,i.length-h.text.length)+v.text;break}else if((d==null?void 0:d.type)==="list"){let h=d,b=h.raw+"\n"+n.join("\n"),v=this.list(b);l[l.length-1]=v,a=a.substring(0,a.length-d.raw.length)+v.raw,i=i.substring(0,i.length-h.raw.length)+v.raw,n=b.substring(l.at(-1).raw.length).split("\n");continue}}return{type:"blockquote",raw:a,tokens:l,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),a=n.length>1,i={type:"list",raw:"",ordered:a,start:a?+n.slice(0,-1):"",loose:!1,items:[]};n=a?"\\d{1,9}\\".concat(n.slice(-1)):"\\".concat(n),this.options.pedantic&&(n=a?n:"[*+-]");let l=this.rules.other.listItemRegex(n),r=!1;for(;e;){let o=!1,u="",c="";if(!(t=l.exec(e))||this.rules.block.hr.test(e))break;u=t[0],e=e.substring(u.length);let f=PA(t[2].split("\n",1)[0],t[1].length),d=e.split("\n",1)[0],h=!f.trim(),b=0;if(this.options.pedantic?(b=2,c=f.trimStart()):h?b=t[1].length+1:(b=f.search(this.rules.other.nonSpaceChar),b=b>4?1:b,c=f.slice(b),b+=t[1].length),h&&this.rules.other.blankLine.test(d)&&(u+=d+"\n",e=e.substring(d.length+1),o=!0),!o){let v=this.rules.other.nextBulletRegex(b),E=this.rules.other.hrRegex(b),m=this.rules.other.fencesBeginRegex(b),p=this.rules.other.headingBeginRegex(b),y=this.rules.other.htmlBeginRegex(b),S=this.rules.other.blockquoteBeginRegex(b);for(;e;){let x=e.split("\n",1)[0],R;if(d=x,this.options.pedantic?(d=d.replace(this.rules.other.listReplaceNesting," "),R=d):R=d.replace(this.rules.other.tabCharGlobal," "),m.test(d)||p.test(d)||y.test(d)||S.test(d)||v.test(d)||E.test(d))break;if(R.search(this.rules.other.nonSpaceChar)>=b||!d.trim())c+="\n"+R.slice(b);else{if(h||f.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||m.test(f)||p.test(f)||E.test(f))break;c+="\n"+d}h=!d.trim(),u+=x+"\n",e=e.substring(x.length+1),f=R.slice(b)}}i.loose||(r?i.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(r=!0)),i.items.push({type:"list_item",raw:u,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=u}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let o of i.items){this.lexer.state.top=!1,o.tokens=this.lexer.blockTokens(o.text,[]);let u=o.tokens[0];if(o.task&&((u==null?void 0:u.type)==="text"||(u==null?void 0:u.type)==="paragraph")){o.text=o.text.replace(this.rules.other.listReplaceTask,""),u.raw=u.raw.replace(this.rules.other.listReplaceTask,""),u.text=u.text.replace(this.rules.other.listReplaceTask,"");for(let f=this.lexer.inlineQueue.length-1;f>=0;f--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[f].src)){this.lexer.inlineQueue[f].src=this.lexer.inlineQueue[f].src.replace(this.rules.other.listReplaceTask,"");break}let c=this.rules.other.listTaskCheckbox.exec(o.raw);if(c){let f={type:"checkbox",raw:c[0]+" ",checked:c[0]!=="[ ]"};o.checked=f.checked,i.loose?o.tokens[0]&&["paragraph","text"].includes(o.tokens[0].type)&&"tokens"in o.tokens[0]&&o.tokens[0].tokens?(o.tokens[0].raw=f.raw+o.tokens[0].raw,o.tokens[0].text=f.raw+o.tokens[0].text,o.tokens[0].tokens.unshift(f)):o.tokens.unshift({type:"paragraph",raw:f.raw,text:f.raw,tokens:[f]}):o.tokens.unshift(f)}}else o.task&&(o.task=!1);if(!i.loose){let c=o.tokens.filter(d=>d.type==="space"),f=c.length>0&&c.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=f}}if(i.loose)for(let o of i.items){o.loose=!0;for(let u of o.tokens)u.type==="text"&&(u.type="paragraph")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=g1(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),a=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:oi(t[0],"\n"),href:a,title:i}}}table(e){var r;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=m1(t[1]),a=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=(r=t[3])!=null&&r.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],l={type:"table",raw:oi(t[0],"\n"),header:[],align:[],rows:[]};if(n.length===a.length){for(let s of a)this.rules.other.tableAlignRight.test(s)?l.align.push("right"):this.rules.other.tableAlignCenter.test(s)?l.align.push("center"):this.rules.other.tableAlignLeft.test(s)?l.align.push("left"):l.align.push(null);for(let s=0;s<n.length;s++)l.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:l.align[s]});for(let s of i)l.rows.push(m1(s,l.header.length).map((o,u)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:l.align[u]})));return l}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:oi(t[0],"\n"),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)==="\n"?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let l=oi(n.slice(0,-1),"\\");if((n.length-l.length)%2===0)return}else{let l=IA(t[2],"()");if(l===-2)return;if(l>-1){let r=(t[0].indexOf("!")===0?5:4)+t[1].length+l;t[2]=t[2].substring(0,l),t[0]=t[0].substring(0,r).trim(),t[3]=""}}let a=t[2],i="";if(this.options.pedantic){let l=this.rules.other.pedanticHrefTitle.exec(a);l&&(a=l[1],i=l[3])}else i=t[3]?t[3].slice(1,-1):"";return a=a.trim(),this.rules.other.startAngleBracket.test(a)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?a=a.slice(1):a=a.slice(1,-1)),y1(t,{href:a&&a.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let a=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[a.toLowerCase()];if(!i){let l=n[0].charAt(0);return{type:"text",raw:l,text:l}}return y1(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let a=this.rules.inline.emStrongLDelim.exec(e);if(!(!a||!a[1]&&!a[2]&&!a[3]&&!a[4]||a[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(a[1]||a[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...a[0]].length-1,l,r,s=i,o=0,u=a[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+i);(a=u.exec(t))!==null;){if(l=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!l)continue;if(r=[...l].length,a[3]||a[4]){s+=r;continue}else if((a[5]||a[6])&&i%3&&!((i+r)%3)){o+=r;continue}if(s-=r,s>0)continue;r=Math.min(r,r+s+o);let c=[...a[0]][0].length,f=e.slice(0,i+a.index+c+r);if(Math.min(i,r)%2){let h=f.slice(1,-1);return{type:"em",raw:f,text:h,tokens:this.lexer.inlineTokens(h)}}let d=f.slice(2,-2);return{type:"strong",raw:f,text:d,tokens:this.lexer.inlineTokens(d)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),a=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return a&&i&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let a=this.rules.inline.delLDelim.exec(e);if(a&&(!a[1]||!n||this.rules.inline.punctuation.exec(n))){let i=[...a[0]].length-1,l,r,s=i,o=this.rules.inline.delRDelim;for(o.lastIndex=0,t=t.slice(-1*e.length+i);(a=o.exec(t))!==null;){if(l=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!l||(r=[...l].length,r!==i))continue;if(a[3]||a[4]){s+=r;continue}if(s-=r,s>0)continue;r=Math.min(r,r+s);let u=[...a[0]][0].length,c=e.slice(0,i+a.index+u+r),f=c.slice(i,-i);return{type:"del",raw:c,text:f,tokens:this.lexer.inlineTokens(f)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,a;return t[2]==="@"?(n=t[1],a="mailto:"+n):(n=t[1],a=n),{type:"link",raw:t[0],text:n,href:a,tokens:[{type:"text",raw:n,text:n}]}}}url(e){var n,a;let t;if(t=this.rules.inline.url.exec(e)){let i,l;if(t[2]==="@")i=t[0],l="mailto:"+i;else{let r;do r=t[0],t[0]=(a=(n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])!=null?a:"";while(r!==t[0]);i=t[0],t[1]==="www."?l="http://"+t[0]:l=t[0]}return{type:"link",raw:t[0],text:i,href:l,tokens:[{type:"text",raw:i,text:i}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},Rn=class yh{constructor(t){Y(this,"tokens");Y(this,"options");Y(this,"state");Y(this,"inlineQueue");Y(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Fi,this.options.tokenizer=this.options.tokenizer||new kc,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:Et,block:Sc.normal,inline:Fs.normal};this.options.pedantic?(n.block=Sc.pedantic,n.inline=Fs.pedantic):this.options.gfm&&(n.block=Sc.gfm,this.options.breaks?n.inline=Fs.breaks:n.inline=Fs.gfm),this.tokenizer.rules=n}static get rules(){return{block:Sc,inline:Fs}}static lex(t,n){return new yh(n).lex(t)}static lexInline(t,n){return new yh(n).inlineTokens(t)}lex(t){t=t.replace(Et.carriageReturn,"\n"),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let a=this.inlineQueue[n];this.inlineTokens(a.src,a.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],a=!1){var l,r,s;this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(Et.tabCharGlobal," ").replace(Et.spaceLine,""));let i=1/0;for(;t;){if(t.length<i)i=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}let o;if((r=(l=this.options.extensions)==null?void 0:l.block)!=null&&r.some(c=>(o=c.call({lexer:this},t,n))?(t=t.substring(o.raw.length),n.push(o),!0):!1))continue;if(o=this.tokenizer.space(t)){t=t.substring(o.raw.length);let c=n.at(-1);o.raw.length===1&&c!==void 0?c.raw+="\n":n.push(o);continue}if(o=this.tokenizer.code(t)){t=t.substring(o.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+o.raw,c.text+="\n"+o.text,this.inlineQueue.at(-1).src=c.text):n.push(o);continue}if(o=this.tokenizer.fences(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.heading(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.hr(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.blockquote(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.list(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.html(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.def(t)){t=t.substring(o.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+o.raw,c.text+="\n"+o.raw,this.inlineQueue.at(-1).src=c.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title},n.push(o));continue}if(o=this.tokenizer.table(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.lheading(t)){t=t.substring(o.raw.length),n.push(o);continue}let u=t;if((s=this.options.extensions)!=null&&s.startBlock){let c=1/0,f=t.slice(1),d;this.options.extensions.startBlock.forEach(h=>{d=h.call({lexer:this},f),typeof d=="number"&&d>=0&&(c=Math.min(c,d))}),c<1/0&&c>=0&&(u=t.substring(0,c+1))}if(this.state.top&&(o=this.tokenizer.paragraph(u))){let c=n.at(-1);a&&(c==null?void 0:c.type)==="paragraph"?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+o.raw,c.text+="\n"+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(o),a=u.length!==t.length,t=t.substring(o.raw.length);continue}if(o=this.tokenizer.text(t)){t=t.substring(o.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+o.raw,c.text+="\n"+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(o);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var u,c,f,d,h,b;this.tokenizer.lexer=this;let a=t,i=null;if(this.tokens.links){let v=Object.keys(this.tokens.links);if(v.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(a))!==null;)v.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(a))!==null;)a=a.slice(0,i.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let l;for(;(i=this.tokenizer.rules.inline.blockSkip.exec(a))!==null;)l=i[2]?i[2].length:0,a=a.slice(0,i.index+l)+"["+"a".repeat(i[0].length-l-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);a=(f=(c=(u=this.options.hooks)==null?void 0:u.emStrongMask)==null?void 0:c.call({lexer:this},a))!=null?f:a;let r=!1,s="",o=1/0;for(;t;){if(t.length<o)o=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}r||(s=""),r=!1;let v;if((h=(d=this.options.extensions)==null?void 0:d.inline)!=null&&h.some(m=>(v=m.call({lexer:this},t,n))?(t=t.substring(v.raw.length),n.push(v),!0):!1))continue;if(v=this.tokenizer.escape(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.tag(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.link(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(v.raw.length);let m=n.at(-1);v.type==="text"&&(m==null?void 0:m.type)==="text"?(m.raw+=v.raw,m.text+=v.text):n.push(v);continue}if(v=this.tokenizer.emStrong(t,a,s)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.codespan(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.br(t)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.del(t,a,s)){t=t.substring(v.raw.length),n.push(v);continue}if(v=this.tokenizer.autolink(t)){t=t.substring(v.raw.length),n.push(v);continue}if(!this.state.inLink&&(v=this.tokenizer.url(t))){t=t.substring(v.raw.length),n.push(v);continue}let E=t;if((b=this.options.extensions)!=null&&b.startInline){let m=1/0,p=t.slice(1),y;this.options.extensions.startInline.forEach(S=>{y=S.call({lexer:this},p),typeof y=="number"&&y>=0&&(m=Math.min(m,y))}),m<1/0&&m>=0&&(E=t.substring(0,m+1))}if(v=this.tokenizer.inlineText(E)){t=t.substring(v.raw.length),v.raw.slice(-1)!=="_"&&(s=v.raw.slice(-1)),r=!0;let m=n.at(-1);(m==null?void 0:m.type)==="text"?(m.raw+=v.raw,m.text+=v.text):n.push(v);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return n}infiniteLoopError(t){let n="Infinite loop on byte: "+t;if(this.options.silent)console.error(n);else throw new Error(n)}},Ec=class{constructor(e){Y(this,"options");Y(this,"parser");this.options=e||Fi}space(e){return""}code({text:e,lang:t,escaped:n}){var l;let a=(l=(t||"").match(Et.notSpaceStart))==null?void 0:l[0],i=e.replace(Et.endingNewline,"")+"\n";return a?'<pre><code class="language-'+Zn(a)+'">'+(n?i:Zn(i,!0))+"</code></pre>\n":"<pre><code>"+(n?i:Zn(i,!0))+"</code></pre>\n"}blockquote({tokens:e}){return"<blockquote>\n".concat(this.parser.parse(e),"</blockquote>\n")}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return"<h".concat(t,">").concat(this.parser.parseInline(e),"</h").concat(t,">\n")}hr(e){return"<hr>\n"}list(e){let t=e.ordered,n=e.start,a="";for(let r=0;r<e.items.length;r++){let s=e.items[r];a+=this.listitem(s)}let i=t?"ol":"ul",l=t&&n!==1?' start="'+n+'"':"";return"<"+i+l+">\n"+a+"</"+i+">\n"}listitem(e){return"<li>".concat(this.parser.parse(e.tokens),"</li>\n")}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:e}){return"<p>".concat(this.parser.parseInline(e),"</p>\n")}table(e){let t="",n="";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let a="";for(let i=0;i<e.rows.length;i++){let l=e.rows[i];n="";for(let r=0;r<l.length;r++)n+=this.tablecell(l[r]);a+=this.tablerow({text:n})}return a&&(a="<tbody>".concat(a,"</tbody>")),"<table>\n<thead>\n"+t+"</thead>\n"+a+"</table>\n"}tablerow({text:e}){return"<tr>\n".concat(e,"</tr>\n")}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?"<".concat(n,' align="').concat(e.align,'">'):"<".concat(n,">"))+t+"</".concat(n,">\n")}strong({tokens:e}){return"<strong>".concat(this.parser.parseInline(e),"</strong>")}em({tokens:e}){return"<em>".concat(this.parser.parseInline(e),"</em>")}codespan({text:e}){return"<code>".concat(Zn(e,!0),"</code>")}br(e){return"<br>"}del({tokens:e}){return"<del>".concat(this.parser.parseInline(e),"</del>")}link({href:e,title:t,tokens:n}){let a=this.parser.parseInline(n),i=h1(e);if(i===null)return a;e=i;let l='<a href="'+e+'"';return t&&(l+=' title="'+Zn(t)+'"'),l+=">"+a+"</a>",l}image({href:e,title:t,text:n,tokens:a}){a&&(n=this.parser.parseInline(a,this.parser.textRenderer));let i=h1(e);if(i===null)return Zn(n);e=i;let l='<img src="'.concat(e,'" alt="').concat(Zn(n),'"');return t&&(l+=' title="'.concat(Zn(t),'"')),l+=">",l}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Zn(e.text)}},Nh=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},On=class bh{constructor(t){Y(this,"options");Y(this,"renderer");Y(this,"textRenderer");this.options=t||Fi,this.options.renderer=this.options.renderer||new Ec,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Nh}static parse(t,n){return new bh(n).parse(t)}static parseInline(t,n){return new bh(n).parseInline(t)}parse(t){var a,i;this.renderer.parser=this;let n="";for(let l=0;l<t.length;l++){let r=t[l];if((i=(a=this.options.extensions)==null?void 0:a.renderers)!=null&&i[r.type]){let o=r,u=this.options.extensions.renderers[o.type].call({parser:this},o);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(o.type)){n+=u||"";continue}}let s=r;switch(s.type){case"space":{n+=this.renderer.space(s);break}case"hr":{n+=this.renderer.hr(s);break}case"heading":{n+=this.renderer.heading(s);break}case"code":{n+=this.renderer.code(s);break}case"table":{n+=this.renderer.table(s);break}case"blockquote":{n+=this.renderer.blockquote(s);break}case"list":{n+=this.renderer.list(s);break}case"checkbox":{n+=this.renderer.checkbox(s);break}case"html":{n+=this.renderer.html(s);break}case"def":{n+=this.renderer.def(s);break}case"paragraph":{n+=this.renderer.paragraph(s);break}case"text":{n+=this.renderer.text(s);break}default:{let o='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return n}parseInline(t,n=this.renderer){var i,l;this.renderer.parser=this;let a="";for(let r=0;r<t.length;r++){let s=t[r];if((l=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&l[s.type]){let u=this.options.extensions.renderers[s.type].call({parser:this},s);if(u!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(s.type)){a+=u||"";continue}}let o=s;switch(o.type){case"escape":{a+=n.text(o);break}case"html":{a+=n.html(o);break}case"link":{a+=n.link(o);break}case"image":{a+=n.image(o);break}case"checkbox":{a+=n.checkbox(o);break}case"strong":{a+=n.strong(o);break}case"em":{a+=n.em(o);break}case"codespan":{a+=n.codespan(o);break}case"br":{a+=n.br(o);break}case"del":{a+=n.del(o);break}case"text":{a+=n.text(o);break}default:{let u='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(u),"";throw new Error(u)}}}return a}},Tc,Js=(Tc=class{constructor(e){Y(this,"options");Y(this,"block");this.options=e||Fi}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?Rn.lex:Rn.lexInline}provideParser(e=this.block){return e?On.parse:On.parseInline}},Y(Tc,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),Y(Tc,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Tc),eN=class{constructor(...e){Y(this,"defaults",vh());Y(this,"options",this.setOptions);Y(this,"parse",this.parseMarkdown(!0));Y(this,"parseInline",this.parseMarkdown(!1));Y(this,"Parser",On);Y(this,"Renderer",Ec);Y(this,"TextRenderer",Nh);Y(this,"Lexer",Rn);Y(this,"Tokenizer",kc);Y(this,"Hooks",Js);this.use(...e)}walkTokens(e,t){var a,i;let n=[];for(let l of e)switch(n=n.concat(t.call(this,l)),l.type){case"table":{let r=l;for(let s of r.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of r.rows)for(let o of s)n=n.concat(this.walkTokens(o.tokens,t));break}case"list":{let r=l;n=n.concat(this.walkTokens(r.items,t));break}default:{let r=l;(i=(a=this.defaults.extensions)==null?void 0:a.childTokens)!=null&&i[r.type]?this.defaults.extensions.childTokens[r.type].forEach(s=>{let o=r[s].flat(1/0);n=n.concat(this.walkTokens(o,t))}):r.tokens&&(n=n.concat(this.walkTokens(r.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let a=T({},n);if(a.async=this.defaults.async||a.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let l=t.renderers[i.name];l?t.renderers[i.name]=function(...r){let s=i.renderer.apply(this,r);return s===!1&&(s=l.apply(this,r)),s}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let l=t[i.level];l?l.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),a.extensions=t),n.renderer){let i=this.defaults.renderer||new Ec(this.defaults);for(let l in n.renderer){if(!(l in i))throw new Error("renderer '".concat(l,"' does not exist"));if(["options","parser"].includes(l))continue;let r=l,s=n.renderer[r],o=i[r];i[r]=(...u)=>{let c=s.apply(i,u);return c===!1&&(c=o.apply(i,u)),c||""}}a.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new kc(this.defaults);for(let l in n.tokenizer){if(!(l in i))throw new Error("tokenizer '".concat(l,"' does not exist"));if(["options","rules","lexer"].includes(l))continue;let r=l,s=n.tokenizer[r],o=i[r];i[r]=(...u)=>{let c=s.apply(i,u);return c===!1&&(c=o.apply(i,u)),c}}a.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new Js;for(let l in n.hooks){if(!(l in i))throw new Error("hook '".concat(l,"' does not exist"));if(["options","block"].includes(l))continue;let r=l,s=n.hooks[r],o=i[r];Js.passThroughHooks.has(l)?i[r]=u=>{if(this.defaults.async&&Js.passThroughHooksRespectAsync.has(l))return(async()=>{let f=await s.call(i,u);return o.call(i,f)})();let c=s.call(i,u);return o.call(i,c)}:i[r]=(...u)=>{if(this.defaults.async)return(async()=>{let f=await s.apply(i,u);return f===!1&&(f=await o.apply(i,u)),f})();let c=s.apply(i,u);return c===!1&&(c=o.apply(i,u)),c}}a.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,l=n.walkTokens;a.walkTokens=function(r){let s=[];return s.push(l.call(this,r)),i&&(s=s.concat(i.call(this,r))),s}}this.defaults=T(T({},this.defaults),a)}),this}setOptions(e){return this.defaults=T(T({},this.defaults),e),this}lexer(e,t){return Rn.lex(e,t!=null?t:this.defaults)}parser(e,t){return On.parse(e,t!=null?t:this.defaults)}parseMarkdown(e){return(t,n)=>{let a=T({},n),i=T(T({},this.defaults),a),l=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&a.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let r=i.hooks?await i.hooks.preprocess(t):t,s=await(i.hooks?await i.hooks.provideLexer(e):e?Rn.lex:Rn.lexInline)(r,i),o=i.hooks?await i.hooks.processAllTokens(s):s;i.walkTokens&&await Promise.all(this.walkTokens(o,i.walkTokens));let u=await(i.hooks?await i.hooks.provideParser(e):e?On.parse:On.parseInline)(o,i);return i.hooks?await i.hooks.postprocess(u):u})().catch(l);try{i.hooks&&(t=i.hooks.preprocess(t));let r=(i.hooks?i.hooks.provideLexer(e):e?Rn.lex:Rn.lexInline)(t,i);i.hooks&&(r=i.hooks.processAllTokens(r)),i.walkTokens&&this.walkTokens(r,i.walkTokens);let s=(i.hooks?i.hooks.provideParser(e):e?On.parse:On.parseInline)(r,i);return i.hooks&&(s=i.hooks.postprocess(s)),s}catch(r){return l(r)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let a="<p>An error occurred:</p><pre>"+Zn(n.message+"",!0)+"</pre>";return t?Promise.resolve(a):a}if(t)return Promise.reject(n);throw n}}},Zi=new eN;function pe(e,t){return Zi.parse(e,t)}pe.options=pe.setOptions=function(e){return Zi.setOptions(e),pe.defaults=Zi.defaults,b1(pe.defaults),pe};pe.getDefaults=vh;pe.defaults=Fi;pe.use=function(...e){return Zi.use(...e),pe.defaults=Zi.defaults,b1(pe.defaults),pe};pe.walkTokens=function(e,t){return Zi.walkTokens(e,t)};pe.parseInline=Zi.parseInline;pe.Parser=On;pe.parser=On.parse;pe.Renderer=Ec;pe.TextRenderer=Nh;pe.Lexer=Rn;pe.lexer=Rn.lex;pe.Tokenizer=kc;pe.Hooks=Js;pe.parse=pe;var jC=pe.options,VC=pe.setOptions,GC=pe.use,YC=pe.walkTokens,KC=pe.parseInline;var XC=On.parse,QC=Rn.lex;var R1=$(ye()),O1=$(Le());pe.setOptions({pedantic:!1,gfm:!0});function Nc({text:e,className:t}){let n=R1.default.useMemo(()=>{if(!e)return"";let a=pe.parse(e,{async:!1});return c1.sanitize(typeof a=="string"?a:"")},[e]);return(0,O1.jsx)("div",{className:t,dangerouslySetInnerHTML:{__html:n}})}var Q=$(Le());function C1({initial:e,onNotifyRemove:t,onUpdated:n}){var Na;let{t:a}=Ze(),i=Xe(),[l,r]=en.default.useState(e),[s,o]=en.default.useState(e),[u,c]=en.default.useState(!1),[f,d]=en.default.useState(!1),[h,b]=en.default.useState(!1),[v,E]=en.default.useState(!1),[m,p]=en.default.useState(!1),[y,S]=en.default.useState(null),[x,R]=en.default.useState(!1),N=en.default.useRef(null),z=en.default.useRef(null);en.default.useEffect(()=>()=>{N.current!==null&&window.clearTimeout(N.current),z.current!==null&&window.clearTimeout(z.current)},[]);function D(){N.current!==null&&(window.clearTimeout(N.current),N.current=null),z.current!==null&&(window.clearTimeout(z.current),z.current=null)}function L(G){D(),R(!1),S(G),N.current=window.setTimeout(()=>{N.current=null,R(!0),z.current=window.setTimeout(()=>{S(null),R(!1),z.current=null},5e3)},3e3)}let oe="".concat(l.bid.toString(),"_tags"),K="".concat(Ln(i.userR),"/b:").concat(l.slug),q=G=>"".concat(Ln(i.userR),"/t:").concat(cl(G)),O=G=>{let te=new Date(G);return new Date(te.getTime()+2).toISOString()},X="".concat(Ln(i.userR),"?before=").concat(encodeURIComponent(O(new Date(l.time)))),I=i.dat.suggestTags===!0,ge=i.dat.suggestTagsUseReturnKey!==!1,{tagInputRef:Ae,suggestionState:et,closeSuggestions:ce,onTagsChange:Se,onTagsKeyDown:tt,onTagsSelect:Ge,onSuggestionHover:Te,onSuggestionPick:Cn}=Ki({enabled:I,useReturnKey:ge,tags:s.tags,onTagsUpdate:G=>{o(te=>B(T({},te),{tags:G}))}});async function Re(G){try{let te=await yS(l.bid,G?"star":"unstar");if(!te.ok){L(ft(a,te.status,te.bodyText));return}D(),S(null);let Ye=B(T({},l),{selected:G});r(Ye),o(nn=>B(T({},nn),{selected:G})),n(Ye)}catch(te){L(te instanceof me?a("error.requestTimedOut"):a("error.networkError"))}}async function fi(){try{let G=await dc(l.bid);if(!G.ok){L(ft(a,G.status,G.bodyText));return}t()}catch(G){L(G instanceof me?a("error.requestTimedOut"):a("error.networkError"))}}async function Oe(){try{let G=await bS(l.bid);if(!G.ok){L(ft(a,G.status,G.bodyText));return}D(),S(null);let te=B(T({},l),{toread:!1});r(te),n(te)}catch(G){L(G instanceof me?a("error.requestTimedOut"):a("error.networkError"))}}function _n(G){o(l),d(G),D(),S(null),R(!1),E(!1),p(!1),ce(),G&&xo(oe)}async function In(){b(!0);try{let G=await hc(s);G!=null&&o(te=>B(T({},te),{title:G}))}finally{b(!1)}}async function tn(){E(!0),p(!0);try{let G=await xS(l.bid);if(!G.ok){L(ft(a,G.status,G.bodyText));return}}finally{E(!1)}}let Wi=async G=>{G.preventDefault(),D(),S(null),R(!1);let te=B(T({},s),{tags:aa(s.tags)});try{let Ye=await pc(te);Ye.ok&&Ye.status>=200&&Ye.status<300?(r(te),d(!1),n(te)):L(ft(a,Ye.status,Ye.bodyText))}catch(Ye){L(Ye instanceof me?a("error.requestTimedOut"):a("error.networkError"))}},Aa=v||m||s.private||l.url!==s.url;return(0,Q.jsxs)("div",{id:String(l.bid),className:"bookmark w-100 mw7 pa1 mb3".concat(l.private?" private":""),children:[i.dat.isowner?(0,Q.jsx)("div",{className:"star fl pointer".concat(l.selected?" selected":""),children:(0,Q.jsx)("button",{className:"thm-text-border",onClick:()=>{Re(!l.selected)},type:"button",children:"\u272D"})}):null,f?null:(0,Q.jsxs)("div",{className:"display",children:[(0,Q.jsx)("a",{href:l.url,target:"_blank",rel:"noreferrer",className:"link bmark-link f5 lh-title".concat(l.toread?" unread":""),children:l.title===""?a("noTitle"):l.title}),(0,Q.jsx)("br",{}),(0,Q.jsx)("a",{href:l.url,className:"link bmark-link f7 thm-text-tertiary thm-hover-link-color",children:l.url}),l.archiveUrl?(0,Q.jsx)("a",{href:l.archiveUrl,className:"link f7 thm-text-tertiary thm-hover-link-color ml2 thm-text-success",target:"_blank",rel:"noreferrer",title:a("bmark.archiveLinkTitle"),children:"\u2611"}):null,(0,Q.jsx)("br",{}),(0,Q.jsx)("div",{className:"description mt1 thm-text-secondary",children:(0,Q.jsx)(Nc,{text:l.description})}),(0,Q.jsx)("div",{className:"tags",children:l.tags!==""?l.tags.split(" ").map(G=>(0,Q.jsx)("a",{className:"link tag mr1".concat(G.slice(0,1)==="."?" private":""),href:q(G),children:G},G)):null}),(0,Q.jsxs)("div",{children:[(0,Q.jsx)("a",{className:"link f7 di mr5 thm-text-tertiary",href:K,"data-time":l.time,title:Ca(i.lang,l.time),children:ag(i.lang,l.time)}),i.dat.isowner?(0,Q.jsxs)("div",{className:"edit_links di",children:[(0,Q.jsxs)("button",{type:"button",onClick:()=>{_n(!0)},className:"edit thm-text-muted thm-hover-link-color",children:[a("edit"),"\xA0\xA0"]}),(0,Q.jsxs)("div",{className:"delete_link di",children:[(0,Q.jsx)("button",{type:"button",onClick:()=>{c(!0)},className:"delete thm-text-muted thm-hover-link-color".concat(u?" dn":""),children:a("delete")}),(0,Q.jsxs)("span",{className:"confirm thm-text-error".concat(u?"":" dn"),children:[(0,Q.jsxs)("button",{type:"button",onClick:()=>{c(!1)},children:[a("cancel"),"\xA0/\xA0"]}),(0,Q.jsx)("button",{type:"button",onClick:()=>{fi()},className:"thm-text-error",children:a("destroy")})]})]})]}):null,i.dat.isowner&&l.toread?(0,Q.jsxs)("div",{className:"read di",children:["\xA0\xA0",(0,Q.jsx)("button",{onClick:()=>{Oe()},className:"mark_read",type:"button",children:a("bmark.markAsRead")})]}):null]}),((Na=i.dat.filter)==null?void 0:Na.tag)=="FilterSingle"?(0,Q.jsx)("div",{className:"mt2",children:(0,Q.jsx)("a",{className:"link f7 di mr5",href:X,children:a("bmark.viewInContext")})}):null]}),f?(0,Q.jsx)("div",{className:"edit_bookmark_form pa2 pt0 thm-bg-surface",children:(0,Q.jsxs)("form",{onSubmit:G=>{Wi(G)},children:[(0,Q.jsx)("div",{children:a("bmark.url")}),(0,Q.jsx)("input",{type:"url",className:"url w-100 mb2 pt1 edit_form_input",required:!0,name:"url",value:s.url,onChange:G=>{o(te=>B(T({},te),{url:G.target.value}))}}),(0,Q.jsx)("div",{children:a("bmark.title")}),(0,Q.jsxs)("div",{className:"flex",children:[(0,Q.jsx)("input",{type:"text",className:"title w-100 mb2 pt1 edit_form_input",name:"title",value:s.title,onChange:G=>{o(te=>B(T({},te),{title:G.target.value}))}}),(0,Q.jsx)("button",{disabled:h,type:"button",onClick:()=>{In()},className:"ml1 pa1 mb2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim f7".concat(h?" thm-bg-disabled":""),children:a("fetch")})]}),(0,Q.jsx)("div",{children:a("bmark.description")}),(0,Q.jsx)("textarea",{className:"description w-100 mb1 pt1 edit_form_input",name:"description",rows:5,value:s.description,onChange:G=>{o(te=>B(T({},te),{description:G.target.value}))}}),(0,Q.jsxs)("div",{id:"tags_input_box",children:[(0,Q.jsx)("div",{children:a("bmark.tags")}),(0,Q.jsxs)("div",{className:"relative",children:[(0,Q.jsx)("input",{id:oe,ref:Ae,type:"text",className:"tags w-100 mb1 pt1 edit_form_input",name:"tags",autoComplete:"off",autoCapitalize:"off",value:s.tags,onChange:Se,onKeyDown:tt,onClick:Ge,onSelect:Ge,onBlur:()=>{window.setTimeout(()=>{ce()},0)}}),et!=null?(0,Q.jsx)(Xi,{suggestionState:et,onHover:Te,onPick:Cn}):null]})]}),(0,Q.jsxs)("div",{className:"edit_form_checkboxes mv3",children:[(0,Q.jsx)("input",{type:"checkbox",className:"private pointer",id:"edit_private",name:"private",checked:s.private,onChange:G=>{o(te=>B(T({},te),{private:G.target.checked}))}})," ",(0,Q.jsx)("label",{htmlFor:"edit_private",className:"mr2",children:a("bmark.private")})," ",(0,Q.jsx)("input",{type:"checkbox",className:"toread pointer",id:"edit_toread",name:"toread",checked:s.toread,onChange:G=>{o(te=>B(T({},te),{toread:G.target.checked}))}})," ",(0,Q.jsx)("label",{htmlFor:"edit_toread",children:a("bmark.toread")})]}),(0,Q.jsxs)("div",{className:"flex justify-between items-center",children:[(0,Q.jsxs)("div",{children:[(0,Q.jsx)("input",{type:"submit",className:"mr1 pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",value:a("save")})," ",(0,Q.jsx)("input",{type:"reset",className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",value:a("cancel"),onClick:()=>{_n(!1)}})]}),i.dat.archiveBackendEnabled?(0,Q.jsx)("button",{type:"button",disabled:Aa,onClick:()=>{tn()},className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary".concat(v?" thm-bg-disabled":"").concat(Aa?" not-allowed o-20":""),children:a(v?"archiving":"archive")}):null]})]})}):null,y!=null?(0,Q.jsx)("span",{className:"thm-text-error f7 db mt1",style:{opacity:x?0:1,transition:x?"opacity 5s":"none"},children:y}):null]})}var Oh=$(Le());function _1({initial:e}){let[t,n]=Rh.default.useState(!1),a=Qi(o=>o.bmarks),i=Qi(o=>o.setAll),l=Qi(o=>o.removeById),r=Qi(o=>o.upsert);return Rh.default.useLayoutEffect(()=>{i(e),n(!0)},[e,i]),(0,Oh.jsx)("div",{children:(t?a:e).map(o=>(0,Oh.jsx)(C1,{initial:o,onNotifyRemove:()=>{l(o.bid)},onUpdated:u=>{r(u)}},o.bid))})}var it=$(ye());var ne=$(Le());function D1(e,t,n,a,i){return e===null?"bulkEdit.pleaseAddSelection":!t&&!n.trim()&&!a.trim()?"bulkEdit.pleaseChooseAction":i>2e4&&n.trim().split(/\s+/).filter(Boolean).length>10?"bulkEdit.tooManyTags":null}function wa(e,t,n,a){return(0,ne.jsx)("a",{href:"#",className:"dib mt1 link".concat(e===t?" nav-active":" silver hover-alt"),onClick:i=>{i.preventDefault(),a(t)},children:n})}function M1({bcount:e}){var di,pi,yr,br;let{t}=Ze(),[n,a]=(0,it.useState)(!1),[i,l]=(0,it.useState)(null),[r,s]=(0,it.useState)(null),[o,u]=(0,it.useState)(""),[c,f]=(0,it.useState)(""),[d,h]=(0,it.useState)(!1),[b,v]=(0,it.useState)(!1),[E,m]=(0,it.useState)(!1),[p,y]=(0,it.useState)(null),[S,x]=(0,it.useState)(!1),R=(0,it.useRef)(null),N=(0,it.useRef)(null),z=Xe(),D=z.dat.suggestTags===!0,L=z.dat.suggestTagsUseReturnKey!==!1,oe=(di=z.dat.filter)!=null?di:{tag:"FilterAll"},K=(pi=z.dat.sharedp)!=null?pi:"all",q=(yr=z.dat.tags)!=null?yr:[],O=(br=z.dat.query)!=null?br:null,I=Qi(Be=>Be.bmarks).map(Be=>Be.bid),ge=I.length,Ae=i===null?0:i==="page"?ge:e,et=D1(i,r,o,c,e),ce=d||et!==null||b||E,{tagInputRef:Se,suggestionState:tt,closeSuggestions:Ge,onTagsChange:Te,onTagsKeyDown:Cn,onTagsSelect:Re,onSuggestionHover:fi,onSuggestionPick:Oe}=Ki({enabled:D&&r!=="delete",useReturnKey:L,tags:c,onTagsUpdate:f}),{tagInputRef:_n,suggestionState:In,closeSuggestions:tn,onTagsChange:Wi,onTagsKeyDown:Aa,onTagsSelect:Na,onSuggestionHover:G,onSuggestionPick:te}=Ki({enabled:D&&r!=="delete",useReturnKey:L,tags:o,onTagsUpdate:u}),Ye=()=>{R.current!==null&&(window.clearTimeout(R.current),R.current=null),N.current!==null&&(window.clearTimeout(N.current),N.current=null)},nn=()=>{l(null),s(null),u(""),f(""),v(!1),m(!1),y(null),x(!1),Ye()};(0,it.useEffect)(()=>{let Be=document.getElementById("bulk-edit-toggle");if(!Be)return;let an=bn=>{bn.preventDefault(),nn(),a(vn=>!vn)};return Be.addEventListener("click",an),()=>{Be.removeEventListener("click",an)}},[]),(0,it.useEffect)(()=>{let Be=document.getElementById("bulk-edit-toggle");Be&&(Be.classList.toggle("nav-active",n),Be.classList.toggle("silver",!n))},[n]),(0,it.useEffect)(()=>{v(!1),m(!1),y(null),x(!1)},[r,i]),(0,it.useEffect)(()=>()=>{Ye()},[]);let Pn=Be=>{Ye(),x(!1),y(Be),R.current=window.setTimeout(()=>{R.current=null,x(!0),N.current=window.setTimeout(()=>{y(null),x(!1),N.current=null},5e3)},3e3)},gr=async Be=>{var Vt;Be.preventDefault(),y(null),x(!1);let an=aa(o),bn=aa(c),vn=D1(i,r,an,bn,e);if(vn!==null){Pn(t(vn));return}if(r==="delete"&&!b){v(!0);return}if(r==="public"&&!E){m(!0);return}v(!1),m(!1),h(!0);try{if(i===null)return;let Wn=await vS(i==="page"?{selection:"page",bids:I,action:r,addTags:an,removeTags:bn,selectionCount:Ae}:{selection:"all",filter:oe,sharedp:K,tags:q,query:O,action:r,addTags:an,removeTags:bn,selectionCount:Ae});Wn.ok?window.location.reload():Pn(ft(t,Wn.status,(Vt=Wn.bodyText)!=null?Vt:""))}catch(Wn){Wn instanceof me?Pn(t("error.requestTimedOut")):Pn(t("error.networkError"))}finally{h(!1)}};if(!n)return null;let Ct=Be=>{s(an=>an===Be?null:Be),Be==="delete"&&(u(""),f(""))};return(0,ne.jsxs)("form",{onSubmit:Be=>{gr(Be)},className:"w-100 mw7 pa2 bulk_bookmark_form mt1",children:[(0,ne.jsxs)("div",{className:"mb2",children:[(0,ne.jsxs)("div",{children:[(0,ne.jsx)("span",{className:"fw7",children:t("bulkEdit.select")}),i!==null&&(0,ne.jsx)("span",{className:"ml2",children:Ae===1?t("bulkEdit.oneBookmarkSelected"):t("bulkEdit.bookmarksSelected",{count:Ae})})]}),(0,ne.jsxs)("div",{children:[wa(i,"page",t("bulkEdit.thisPage"),l)," \u2027 ",wa(i,"all",t("bulkEdit.allPages"),l)]})]}),(0,ne.jsxs)("div",{className:"mb2",children:[(0,ne.jsx)("div",{children:(0,ne.jsx)("span",{className:"fw7",children:t("bulkEdit.action")})}),(0,ne.jsxs)("div",{children:[wa(r,"private",t("bulkEdit.makePrivate"),Ct)," \u2027 ",wa(r,"public",t("bulkEdit.makePublic"),Ct)," \u2027 ",wa(r,"read",t("bulkEdit.markAsRead"),Ct)," \u2027 ",wa(r,"unread",t("bulkEdit.unread"),Ct)," \u2027 ",wa(r,"star",t("bulkEdit.addStars"),Ct)," \u2027 ",wa(r,"unstar",t("bulkEdit.removeStars"),Ct)," \u2027 ",wa(r,"delete",t("delete"),Ct)]})]}),(0,ne.jsxs)("div",{className:"mb2",children:[(0,ne.jsx)("div",{children:(0,ne.jsx)("span",{className:"fw7".concat(aa(c)?" nav-active":""),children:t("bulkEdit.removeTags")})}),(0,ne.jsxs)("div",{className:"relative",children:[(0,ne.jsx)("input",{ref:Se,type:"text",className:"tags w-100 mb1 pt1 edit_form_input".concat(r==="delete"?" o-50 not-allowed":""),disabled:r==="delete",autoComplete:"off",autoCapitalize:"off",value:c,onChange:Te,onKeyDown:Cn,onClick:Re,onSelect:Re,onBlur:()=>{window.setTimeout(()=>{Ge()},0)}}),tt!=null?(0,ne.jsx)(Xi,{suggestionState:tt,onHover:fi,onPick:Oe}):null]})]}),(0,ne.jsxs)("div",{className:"mb2",children:[(0,ne.jsx)("div",{children:(0,ne.jsx)("span",{className:"fw7".concat(aa(o)?" nav-active":""),children:t("bulkEdit.addTags")})}),(0,ne.jsxs)("div",{className:"relative",children:[(0,ne.jsx)("input",{ref:_n,type:"text",className:"tags w-100 mb1 pt1 edit_form_input".concat(r==="delete"?" o-50 not-allowed":""),disabled:r==="delete",autoComplete:"off",autoCapitalize:"off",value:o,onChange:Wi,onKeyDown:Aa,onClick:Na,onSelect:Na,onBlur:()=>{window.setTimeout(()=>{tn()},0)}}),In!=null?(0,ne.jsx)(Xi,{suggestionState:In,onHover:G,onPick:te}):null]})]}),(0,ne.jsxs)("div",{className:"flex items-center",children:[(0,ne.jsx)("button",{type:"submit",disabled:d||b||E,className:"mr2 pv1 ph2 thm-text-primary ba thm-border-default rdim".concat(ce?" thm-bg-disabled not-allowed":" thm-bg-secondary pointer"),onClick:()=>{et!==null&&Pn(t(et))},children:t(d?"bulkEdit.submitting":"bulkEdit.submit")})," ",(0,ne.jsx)("button",{type:"button",className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",onClick:()=>{nn(),a(!1)},children:t("cancel")}),p!=null&&(0,ne.jsx)("span",{className:"thm-text-error f6 ml2",style:{opacity:S?0:1,transition:S?"opacity 5s":"none"},children:p}),b&&(0,ne.jsxs)("span",{className:"f6 ml2",children:[(0,ne.jsx)("span",{className:"mr2",children:Ae===1?t("bulkEdit.destroyOne"):t("bulkEdit.destroyMany",{count:Ae})}),(0,ne.jsxs)("span",{className:"nowrap",children:[(0,ne.jsx)("button",{type:"button",onClick:()=>{v(!1)},children:t("cancel")})," / ",(0,ne.jsx)("button",{type:"submit",className:"thm-text-error",children:t("destroy")})]})]}),E&&(0,ne.jsxs)("span",{className:"f6 ml2",children:[(0,ne.jsx)("span",{className:"mr2",children:Ae===1?t("bulkEdit.publicOne"):t("bulkEdit.publicMany",{count:Ae})}),(0,ne.jsxs)("span",{className:"nowrap",children:[(0,ne.jsx)("button",{type:"button",onClick:()=>{m(!1)},children:t("cancel")})," / ",(0,ne.jsx)("button",{type:"submit",className:"thm-text-error",children:t("bulkEdit.makePublic")})]})]})]})]})}var Ch=$(ye());var jt=$(Le());function tN(e){let t=e.split("\n");return(0,jt.jsxs)(jt.Fragment,{children:[t[0],t.slice(1).map((n,a)=>(0,jt.jsxs)(Ch.default.Fragment,{children:[(0,jt.jsx)("br",{}),n]},a))]})}function z1({initial:e}){let{t}=Ze(),n=Xe(),a=n.dat.previewNotes!==!1,i=l=>"".concat(Ln(n.userR),"/notes/").concat(l);return(0,jt.jsx)("div",{children:e.map(l=>{let r=Ch.default.useMemo(()=>ol(n.lang,l.created),[n.lang,l.created]);return(0,jt.jsx)("div",{id:String(l.id),className:"note w-100 mw7 pa1 mb2".concat(l.shared?"":" private"),children:(0,jt.jsxs)("div",{className:"display",children:[(0,jt.jsx)("a",{href:i(l.slug),className:"link note-link f5 lh-title",children:l.title===""?t("noTitle"):l.title}),(0,jt.jsx)("br",{}),a?(0,jt.jsx)("div",{className:"description mt1 thm-text-secondary",children:tN(l.text.slice(0,200))}):null,(0,jt.jsx)("a",{className:"link note-link f7 dib thm-text-tertiary w4","data-created":l.created,title:Ca(n.lang,l.created),href:i(l.slug),children:r})]})},l.id)})})}var ui=$(ye());var J=$(Le());function nN(e){let t=e.split("\n");return(0,J.jsxs)(J.Fragment,{children:[t[0],t.slice(1).map((n,a)=>(0,J.jsxs)(ui.default.Fragment,{children:[(0,J.jsx)("br",{}),n]},a))]})}function L1({initial:e}){let{t}=Ze(),n=Xe(),[a,i]=ui.default.useState(e),[l,r]=ui.default.useState(e),[s,o]=ui.default.useState(!1),[u,c]=ui.default.useState(e.id<=0),[f,d]=ui.default.useState(!1),[h,b]=ui.default.useState(null),v=ol(n.lang,a.created),E="".concat(a.id.toString(),"_text");function m(S){r(a),c(S);let x=Or(),R=Cr(x,"next");!S&&R==="closeWindow"?ul(window):S&&xo(E)}async function p(){try{let S=await NS(a.id);if(!S.ok){b(ft(t,S.status,S.bodyText));return}d(!0)}catch(S){b(S instanceof me?t("error.requestTimedOut"):t("error.networkError"))}}let y=async S=>{S.preventDefault(),b(null);try{let x=await kS(l);if(x.ok&&x.status>=200&&x.status<300){let R=Or(),N=Cr(R,"next"),z=document.referrer,D=window.location.origin;N==="closeWindow"?ul(window):N==="back"?z.startsWith(D)?window.location.href=z:window.location.href=D:l.id===0?window.location.href=Ln(n.noteR):x.note&&(i(x.note),r(x.note),c(!1))}else b(ft(t,x.status,x.bodyText))}catch(x){b(x instanceof me?t("error.requestTimedOut"):t("error.networkError"))}};return f?(0,J.jsx)("p",{className:"thm-text-error",children:t("note.killed")}):(0,J.jsxs)("div",{id:String(a.id),className:"note w-100 mw7 pa1 mb2",children:[h?(0,J.jsx)("div",{className:"alert alert-err mb2",children:h}):null,u?(0,J.jsxs)("form",{onSubmit:S=>{y(S)},children:[(0,J.jsx)("p",{className:"mt2 mb1",children:t("note.titleLabel")}),(0,J.jsx)("input",{type:"text",className:"title w-100 mb1 pt1 edit_form_input",name:"title",value:l.title,onChange:S=>{r(x=>B(T({},x),{title:S.target.value}))},autoFocus:l.title===""}),(0,J.jsx)("br",{}),(0,J.jsx)("p",{className:"mt2 mb1",children:t("note.descriptionLabel")}),(0,J.jsx)("textarea",{id:E,className:"description w-100 mb1 pt1 edit_form_input",name:"text",rows:25,value:l.text,onChange:S=>{r(x=>B(T({},x),{text:S.target.value}))}}),(0,J.jsxs)("div",{className:"edit_form_checkboxes mb3",children:[(0,J.jsx)("input",{type:"checkbox",className:"is-markdown pointer",id:"edit_ismarkdown",name:"ismarkdown",checked:l.isMarkdown,onChange:S=>{r(x=>B(T({},x),{isMarkdown:S.target.checked}))}})," ",(0,J.jsx)("label",{htmlFor:"edit_ismarkdown",className:"mr2",children:t("note.useMarkdown")}),(0,J.jsx)("br",{})]}),(0,J.jsxs)("div",{className:"edit_form_checkboxes mb3",children:[(0,J.jsx)("input",{type:"checkbox",className:"is-markdown pointer",id:"edit_shared",name:"shared",checked:l.shared,onChange:S=>{r(x=>B(T({},x),{shared:S.target.checked}))}})," ",(0,J.jsx)("label",{htmlFor:"edit_shared",className:"mr2",children:t("note.publicLabel")}),(0,J.jsx)("br",{})]}),(0,J.jsx)("input",{type:"submit",className:"mr1 pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",value:t("save")})," ",(0,J.jsx)("input",{type:"reset",className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",value:t("cancel"),onClick:()=>{m(!1)}})]}):(0,J.jsxs)(J.Fragment,{children:[n.dat.isowner?(0,J.jsx)("div",{className:"edit_links db mb3",children:(0,J.jsxs)("button",{type:"button",onClick:()=>{m(!0)},className:"edit thm-text-muted thm-hover-link-color",children:[t("edit"),"\xA0\xA0"]})}):null,(0,J.jsxs)("div",{className:"display",children:[(0,J.jsx)("div",{className:"link f5 lh-title",children:a.title===""?t("noTitle"):a.title}),(0,J.jsx)("br",{}),a.isMarkdown?(0,J.jsx)("div",{className:"description mt1",children:(0,J.jsx)(Nc,{text:a.text})}):(0,J.jsx)("div",{className:"description mt1 thm-text-secondary",children:nN(a.text)}),(0,J.jsxs)("div",{className:"link f7 mt2 dib thm-text-tertiary w4",children:[(0,J.jsx)("span",{"data-created":a.created,title:Ca(n.lang,a.created),children:v})," - ",(0,J.jsx)("span",{className:"thm-text-tertiary",children:a.shared?t("filter.public"):t("filter.private")})]})]}),n.dat.isowner?(0,J.jsxs)("div",{className:"edit_links db mt3",children:[(0,J.jsxs)("button",{type:"button",onClick:()=>{m(!0)},className:"edit thm-text-muted thm-hover-link-color",children:[t("edit"),"\xA0\xA0"]}),(0,J.jsxs)("div",{className:"delete_link di",children:[(0,J.jsx)("button",{type:"button",onClick:()=>{o(!0)},className:"delete thm-text-muted thm-hover-link-color".concat(s?" dn":""),children:t("delete")}),(0,J.jsxs)("span",{className:"confirm thm-text-error".concat(s?"":" dn"),children:[(0,J.jsxs)("button",{type:"button",onClick:()=>{o(!1)},children:[t("cancel"),"\xA0/\xA0"]}),(0,J.jsx)("button",{type:"button",onClick:()=>{p()},className:"thm-text-error",children:t("destroy")})]})]})]}):null]})]})}var vt=$(ye());var we=$(Le());function B1(e,t){return e===null?"bulkEditNotes.pleaseAddSelection":t?null:"bulkEditNotes.pleaseChooseAction"}function Ji(e,t,n,a){return(0,we.jsx)("a",{href:"#",className:"dib mt1 link".concat(e===t?" nav-active":" silver hover-alt"),onClick:i=>{i.preventDefault(),a(t)},children:n})}function U1({ncount:e}){var ge,Ae,et;let{t}=Ze(),[n,a]=(0,vt.useState)(!1),[i,l]=(0,vt.useState)(null),[r,s]=(0,vt.useState)(null),[o,u]=(0,vt.useState)(!1),[c,f]=(0,vt.useState)(!1),[d,h]=(0,vt.useState)(!1),[b,v]=(0,vt.useState)(null),[E,m]=(0,vt.useState)(!1),p=(0,vt.useRef)(null),y=(0,vt.useRef)(null),S=Xe(),x=(ge=S.dat.query)!=null?ge:null,R=(Ae=S.dat.sharedp)!=null?Ae:"all",N=((et=S.dat.notes)!=null?et:[]).map(ce=>ce.id),z=N.length,D=i===null?0:i==="page"?z:e,L=B1(i,r),oe=o||L!==null||c||d,K=()=>{p.current!==null&&(window.clearTimeout(p.current),p.current=null),y.current!==null&&(window.clearTimeout(y.current),y.current=null)},q=()=>{l(null),s(null),f(!1),h(!1),v(null),m(!1),K()};(0,vt.useEffect)(()=>{let ce=document.getElementById("bulk-edit-toggle");if(!ce)return;let Se=tt=>{tt.preventDefault(),q(),a(Ge=>!Ge)};return ce.addEventListener("click",Se),()=>{ce.removeEventListener("click",Se)}},[]),(0,vt.useEffect)(()=>{let ce=document.getElementById("bulk-edit-toggle");ce&&(ce.classList.toggle("nav-active",n),ce.classList.toggle("silver",!n))},[n]),(0,vt.useEffect)(()=>{f(!1),h(!1),v(null),m(!1)},[r,i]),(0,vt.useEffect)(()=>()=>{K()},[]);let O=ce=>{K(),m(!1),v(ce),p.current=window.setTimeout(()=>{p.current=null,m(!0),y.current=window.setTimeout(()=>{v(null),m(!1),y.current=null},5e3)},3e3)},X=async ce=>{var tt;ce.preventDefault(),v(null),m(!1);let Se=B1(i,r);if(Se!==null){O(t(Se));return}if(r==="delete"&&!c){f(!0);return}if(r==="public"&&!d){h(!0);return}f(!1),h(!1),u(!0);try{if(i===null||r===null)return;let Ge=await SS(i==="page"?{selection:"page",nids:N,action:r,selectionCount:D}:{selection:"all",sharedp:R,query:x,action:r,selectionCount:D});Ge.ok?window.location.reload():O(ft(t,Ge.status,(tt=Ge.bodyText)!=null?tt:""))}catch(Ge){Ge instanceof me?O(t("error.requestTimedOut")):O(t("error.networkError"))}finally{u(!1)}};if(!n)return null;let I=ce=>{s(Se=>Se===ce?null:ce)};return(0,we.jsxs)("form",{onSubmit:ce=>{X(ce)},className:"w-100 mw7 pa2 bulk_bookmark_form mt1",children:[(0,we.jsxs)("div",{className:"mb2",children:[(0,we.jsxs)("div",{children:[(0,we.jsx)("span",{className:"fw7",children:t("bulkEdit.select")}),i!==null&&(0,we.jsx)("span",{className:"ml2",children:D===1?t("bulkEditNotes.oneNoteSelected"):t("bulkEditNotes.notesSelected",{count:D})})]}),(0,we.jsxs)("div",{children:[Ji(i,"page",t("bulkEdit.thisPage"),l)," \u2027 ",Ji(i,"all",t("bulkEdit.allPages"),l)]})]}),(0,we.jsxs)("div",{className:"mb2",children:[(0,we.jsx)("div",{children:(0,we.jsx)("span",{className:"fw7",children:t("bulkEdit.action")})}),(0,we.jsxs)("div",{children:[Ji(r,"private",t("bulkEdit.makePrivate"),I)," \u2027 ",Ji(r,"public",t("bulkEdit.makePublic"),I)," \u2027 ",Ji(r,"markdown",t("bulkEditNotes.useMarkdown"),I)," \u2027 ",Ji(r,"plaintext",t("bulkEditNotes.usePlaintext"),I)," \u2027 ",Ji(r,"delete",t("delete"),I)]})]}),(0,we.jsxs)("div",{className:"flex items-center",children:[(0,we.jsx)("button",{type:"submit",disabled:o||c||d,className:"mr2 pv1 ph2 thm-text-primary ba thm-border-default rdim".concat(oe?" thm-bg-disabled not-allowed":" thm-bg-secondary pointer"),onClick:()=>{L!==null&&O(t(L))},children:t(o?"bulkEdit.submitting":"bulkEdit.submit")})," ",(0,we.jsx)("button",{type:"button",className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",onClick:()=>{q(),a(!1)},children:t("cancel")}),b!=null&&(0,we.jsx)("span",{className:"thm-text-error f6 ml2",style:{opacity:E?0:1,transition:E?"opacity 5s":"none"},children:b}),c&&(0,we.jsxs)("span",{className:"f6 ml2",children:[(0,we.jsx)("span",{className:"mr2",children:D===1?t("bulkEditNotes.destroyOne"):t("bulkEditNotes.destroyMany",{count:D})}),(0,we.jsxs)("span",{className:"nowrap",children:[(0,we.jsx)("button",{type:"button",onClick:()=>{f(!1)},children:t("cancel")})," / ",(0,we.jsx)("button",{type:"submit",className:"thm-text-error",children:t("destroy")})]})]}),d&&(0,we.jsxs)("span",{className:"f6 ml2",children:[(0,we.jsx)("span",{className:"mr2",children:D===1?t("bulkEditNotes.publicOne"):t("bulkEditNotes.publicMany",{count:D})}),(0,we.jsxs)("span",{className:"nowrap",children:[(0,we.jsx)("button",{type:"button",onClick:()=>{h(!1)},children:t("cancel")})," / ",(0,we.jsx)("button",{type:"submit",className:"thm-text-error",children:t("bulkEdit.makePublic")})]})]})]})]})}var Rc=$(ye());var ci=bc(e=>({mode:{kind:"none"},tagcloud:{},setMode:t=>{e({mode:t})},setTagCloud:t=>{e({tagcloud:t})}}));function H1(e){switch(e.mode){case"top":return{kind:"top",expanded:e.expanded};case"lowerBound":{let t=typeof e.value=="number"?e.value:Number(e.value);return Number.isFinite(t)?{kind:"lowerBound",expanded:e.expanded,value:t}:{kind:"none"}}case"related":{let t=typeof e.value=="string"?e.value:"",n=t?t.split(" "):[];return{kind:"related",expanded:e.expanded,value:n}}case"relatedLowerBound":{let t=typeof e.value=="string"?e.value:"",n=t?t.split(" "):[],a=typeof e.lowerBound=="number"&&e.lowerBound>0?e.lowerBound:1;return{kind:"relatedLowerBound",expanded:e.expanded,value:n,lowerBound:a}}default:return{kind:"none"}}}function _h(e){switch(e.kind){case"top":return{mode:"top",value:null,expanded:e.expanded};case"lowerBound":return{mode:"lowerBound",value:e.value,expanded:e.expanded};case"related":return{mode:"related",value:e.value.join(" "),expanded:e.expanded};case"relatedLowerBound":return{mode:"relatedLowerBound",value:e.value.join(" "),expanded:e.expanded,lowerBound:e.lowerBound};case"none":return{mode:"none",value:"",expanded:!1}}}function Fn(e){return e.kind==="none"?!1:e.expanded}function mr(e,t){return e.kind==="none"?e:B(T({},e),{expanded:t})}var Ii=$(Le());function aN(e){return()=>{let t=document.querySelector(e);if(!t)return;t.addEventListener("click",a=>{let i=a.target.closest("[data-tcm-action]");if(!i||!t.contains(i))return;let l=q1(i);if(!l)return;a.preventDefault();let r=ci.getState().mode;if(l.action==="toggleExpand"){Dh(mr(r,!Fn(r)));return}if(l.action==="top"||l.action==="lowerBound"){let c=l.action==="top"?{kind:"top",expanded:Fn(r)}:{kind:"lowerBound",expanded:Fn(r),value:l.value},f=c.kind==="top"&&r.kind==="top"||c.kind==="lowerBound"&&r.kind==="lowerBound"&&r.value===c.value;Dh(f?mr(r,!Fn(r)):mr(c,!0));return}let s=iN(r),o=l.action==="related"?{kind:"related",expanded:Fn(r),value:s}:{kind:"relatedLowerBound",expanded:Fn(r),value:s,lowerBound:l.lowerBound},u=o.kind==="related"&&r.kind==="related"||o.kind==="relatedLowerBound"&&r.kind==="relatedLowerBound"&&r.lowerBound===o.lowerBound;Dh(u?mr(r,!Fn(r)):mr(o,!0))});function n(a){t&&a.kind!=="none"&&t.querySelectorAll("[data-tcm-action]").forEach(i=>{let l=q1(i);if(l)switch(l.action){case"top":i.classList.toggle("b",a.kind==="top");return;case"lowerBound":i.classList.toggle("b",a.kind==="lowerBound"&&a.value===l.value);return;case"related":i.classList.toggle("b",a.kind==="related");return;case"relatedLowerBound":i.classList.toggle("b",a.kind==="relatedLowerBound"&&a.lowerBound===l.lowerBound);return;case"toggleExpand":{let r=Fn(a)?i.dataset.hideLabel:i.dataset.showLabel;r!==void 0&&(i.textContent=r);return}}})}ci.subscribe(a=>{n(a.mode)})}}function q1(e){switch(e.dataset.tcmAction){case"top":return{action:"top"};case"lowerBound":return{action:"lowerBound",value:Number(e.dataset.tcmValue)};case"related":return{action:"related"};case"relatedLowerBound":return{action:"relatedLowerBound",lowerBound:Number(e.dataset.tcmLb)};case"toggleExpand":return{action:"toggleExpand"};default:return null}}async function Dh(e){ci.getState().setMode(e),Xe().dat.isowner&&await wS(_h(e))}function iN(e){return e.kind==="related"||e.kind==="relatedLowerBound"?e.value:[]}function V1({initialMode:e}){let t=ci(r=>r.mode),n=ci(r=>r.tagcloud),a=ci(r=>r.setMode),i=ci(r=>r.setTagCloud);if(Rc.default.useEffect(()=>{a(e)},[e]),Rc.default.useEffect(()=>{async function r(s){if(s.kind==="none")return;let o=await ES(_h(s));i(o!=null?o:{})}r(t)},[t,i]),t.kind==="none"||!Fn(t))return null;let l=t.kind==="related"||t.kind==="relatedLowerBound"?t.value:[];return(0,Ii.jsx)("div",{className:"tag_cloud_body",children:lN(l,n)})}function lN(e,t){let n=Xe(),a=e.map(o=>o.toLowerCase()),i=o=>"".concat(Ln(n.userR)).concat(o===""?"":"/t:".concat(o)),l=Object.values(t),r=l.length?Math.min(...l):1,s=l.length?Math.max(...l):1;return Object.entries(t).sort((o,u)=>o[0].toLowerCase().localeCompare(u[0].toLowerCase())).map(([o,u])=>{let c=o.toLowerCase(),f=j1(v=>Math.log(1+v),u,r,s,100,133),d=j1(v=>Math.log(1+v),u,r,s,.6,1),h={fontSize:"".concat(f.toString(),"%"),opacity:d},b=a.length===0?null:a.includes(c)?(0,Ii.jsx)("a",{href:i(a.filter(v=>v!==c).map(cl).join("+")),className:"link mr2 tag-exclude",children:"\u2296"}):(0,Ii.jsx)("a",{href:i(a.concat([c]).map(cl).join("+")),className:"link mr2 tag-include",children:"\u2295"});return(0,Ii.jsxs)(Rc.default.Fragment,{children:[(0,Ii.jsx)("a",{href:i(cl(o)),className:"link tag mr1",style:h,children:o}),b]},o)})}function j1(e,t,n,a,i,l){let r=e(a-n);return(a-n<.01||r===0?1:e(t-n)/r)*(l-i)+i}var Jn=$(Le());function Y1(e){return document.querySelector(e)}function rN(){let e=document.querySelector("#content");e&&e.setAttribute("view-rendered","")}function sN({children:e}){return(0,G1.useLayoutEffect)(()=>{rN()},[]),e}function Pi(e,t){let n=Y1(e);n&&(0,Mh.createRoot)(n).render((0,Jn.jsx)(sN,{children:t}))}var cD=e=>()=>{e.preventDefault(),LS()},fD=e=>t=>()=>{Pi(e,(0,Jn.jsx)(_1,{initial:t}))},dD=e=>t=>()=>{Pi(e,(0,Jn.jsx)(M1,{bcount:t}))},pD=e=>t=>()=>{let n=Y1(e);n&&(0,Mh.createRoot)(n).render((0,Jn.jsx)(V1,{initialMode:H1(t)}))};var hD=e=>t=>()=>{Pi(e,(0,Jn.jsx)(KS,{initial:t}))},mD=e=>t=>()=>{Pi(e,(0,Jn.jsx)(z1,{initial:t}))},gD=e=>t=>()=>{Pi(e,(0,Jn.jsx)(U1,{ncount:t}))},yD=e=>t=>()=>{Pi(e,(0,Jn.jsx)(L1,{initial:t}))},bD=e=>t=>()=>{Pi(e,(0,Jn.jsx)(jS,{initial:t}))};function vD(){function e(r){return r==="light"||r==="dark"}function t(){let r=document.documentElement.dataset.colorScheme;return r==="light"||r==="dark"?r:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function n(r){document.documentElement.dataset.colorScheme=r}let a="espial-color-scheme",i=window.localStorage.getItem(a);e(i)&&n(i);let l=document.querySelector("#color-scheme-toggle");l&&l.addEventListener("click",r=>{r.preventDefault();let s=t()==="dark"?"light":"dark";n(s),window.localStorage.setItem(a,s)})}export{aN as bindTagCloudHeader,vD as initColorSchemeToggle,cD as logoutE,bD as renderAccountSettings,hD as renderAddForm,fD as renderBookmarks,dD as renderBulkEdit,yD as renderNote,gD as renderNoteBulkEdit,mD as renderNotes,pD as renderTagCloud}; +/*! Bundled license information: + +react/cjs/react.production.js: + (** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +use-sync-external-store/cjs/use-sync-external-store-shim.production.js: + (** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +scheduler/cjs/scheduler.production.js: + (** + * @license React + * scheduler.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-dom/cjs/react-dom.production.js: + (** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react-dom/cjs/react-dom-client.production.js: + (** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +react/cjs/react-jsx-runtime.production.js: + (** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +ky/distribution/index.js: + (*! MIT License © Sindre Sorhus *) + +dompurify/dist/purify.es.mjs: + (*! @license DOMPurify 3.4.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.7/LICENSE *) +*/ +//# sourceMappingURL=app-LILLUWFD.min.js.map
+ static/js/app-LILLUWFD.min.js.gz view
binary file changed (absent → 133539 bytes)
+ static/js/app-LILLUWFD.min.js.map view
@@ -0,0 +1,7 @@+{ + "version": 3, + "sources": ["../node_modules/react/cjs/react.production.js", "../node_modules/react/index.js", "../node_modules/void-elements/index.js", "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js", "../node_modules/use-sync-external-store/shim/index.js", "../node_modules/scheduler/cjs/scheduler.production.js", "../node_modules/scheduler/index.js", "../node_modules/react-dom/cjs/react-dom.production.js", "../node_modules/react-dom/index.js", "../node_modules/react-dom/cjs/react-dom-client.production.js", "../node_modules/react-dom/client.js", "../node_modules/react/cjs/react-jsx-runtime.production.js", "../node_modules/react/jsx-runtime.js", "../node_modules/i18next/dist/esm/i18next.js", "../node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../node_modules/@babel/runtime/helpers/esm/typeof.js", "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../node_modules/@babel/runtime/helpers/esm/createClass.js", "../node_modules/i18next-chained-backend/dist/esm/index.js", "../node_modules/i18next-http-backend/esm/index.js", "../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../node_modules/i18next-localstorage-backend/dist/esm/i18nextLocalStorageBackend.js", "../node_modules/react-i18next/dist/es/Trans.js", "../node_modules/react-i18next/dist/es/TransWithoutContext.js", "../node_modules/react-i18next/dist/es/utils.js", "../node_modules/react-i18next/dist/es/unescape.js", "../node_modules/react-i18next/dist/es/defaults.js", "../node_modules/react-i18next/dist/es/i18nInstance.js", "../node_modules/react-i18next/dist/es/context.js", "../node_modules/react-i18next/dist/es/initReactI18next.js", "../node_modules/react-i18next/dist/es/IcuTrans.js", "../node_modules/react-i18next/dist/es/IcuTransWithoutContext.js", "../node_modules/react-i18next/dist/es/IcuTransUtils/TranslationParserError.js", "../node_modules/react-i18next/dist/es/IcuTransUtils/htmlEntityDecoder.js", "../node_modules/react-i18next/dist/es/IcuTransUtils/tokenizer.js", "../node_modules/react-i18next/dist/es/IcuTransUtils/renderTranslation.js", "../node_modules/react-i18next/dist/es/useTranslation.js", "../node_modules/react-i18next/dist/es/withTranslation.js", "../node_modules/react-i18next/dist/es/I18nextProvider.js", "../node_modules/react-i18next/dist/es/withSSR.js", "../node_modules/react-i18next/dist/es/useSSR.js", "../../static/locales/en/translation.json", "../src/globals.ts", "../src/util.ts", "../src/i18n.ts", "../src/index.tsx", "../node_modules/ky/source/errors/KyError.ts", "../node_modules/ky/source/errors/HTTPError.ts", "../node_modules/ky/source/errors/NetworkError.ts", "../node_modules/ky/source/errors/NonError.ts", "../node_modules/ky/source/errors/ForceRetryError.ts", "../node_modules/ky/source/errors/SchemaValidationError.ts", "../node_modules/ky/source/errors/TimeoutError.ts", "../node_modules/ky/source/core/constants.ts", "../node_modules/ky/source/utils/body.ts", "../node_modules/ky/source/utils/is.ts", "../node_modules/ky/source/utils/merge.ts", "../node_modules/ky/source/utils/normalize.ts", "../node_modules/ky/source/utils/timeout.ts", "../node_modules/ky/source/utils/delay.ts", "../node_modules/ky/source/utils/options.ts", "../node_modules/ky/source/utils/is-network-error.ts", "../node_modules/ky/source/utils/type-guards.ts", "../node_modules/ky/source/core/Ky.ts", "../node_modules/ky/source/index.ts", "../src/api.ts", "../src/components/AccountSettings.tsx", "../src/components/AddForm.tsx", "../src/hooks/useTagSuggestions.ts", "../src/components/TagSuggestionsDropdown.tsx", "../src/components/BList.tsx", "../node_modules/zustand/esm/vanilla.mjs", "../node_modules/zustand/esm/react.mjs", "../src/stores/bookmarksStore.ts", "../src/components/BMark.tsx", "../node_modules/dompurify/src/utils.ts", "../node_modules/dompurify/src/tags.ts", "../node_modules/dompurify/src/attrs.ts", "../node_modules/dompurify/src/regexp.ts", "../node_modules/dompurify/src/purify.ts", "../node_modules/marked/src/defaults.ts", "../node_modules/marked/src/rules.ts", "../node_modules/marked/src/helpers.ts", "../node_modules/marked/src/Tokenizer.ts", "../node_modules/marked/src/Lexer.ts", "../node_modules/marked/src/Renderer.ts", "../node_modules/marked/src/TextRenderer.ts", "../node_modules/marked/src/Parser.ts", "../node_modules/marked/src/Hooks.ts", "../node_modules/marked/src/Instance.ts", "../node_modules/marked/src/marked.ts", "../src/components/Markdown.tsx", "../src/components/BulkEdit.tsx", "../src/components/NList.tsx", "../src/components/NNote.tsx", "../src/components/NoteBulkEdit.tsx", "../src/components/TagCloud.tsx", "../src/stores/tagCloudStore.ts", "../src/types.ts"], + "sourcesContent": ["/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.6\";\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n", "/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n", "/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n", "/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n", "/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.2.6\";\n", "'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n", "/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$1) {\n control = x$1;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = workInProgress),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n return lanes & 261888;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n track(element);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n track(element);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$286;\n if (canUseDOM) {\n var isSupported$jscomp$inline_427 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_427) {\n var element$jscomp$inline_428 = document.createElement(\"div\");\n element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_427 =\n \"function\" === typeof element$jscomp$inline_428.oninput;\n }\n JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n } else JSCompiler_inline_result$jscomp$286 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$286 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n globalMostRecentTransitionTime = now();\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n (\"forwards\" === node.memoizedProps.revealOrder ||\n \"backwards\" === node.memoizedProps.revealOrder ||\n \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n \"together\" === node.memoizedProps.revealOrder)\n ) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$60 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n gesture: update.gesture,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$60 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$66) {\n onActionError(actionQueue, node, error$66);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (\n 0 === (renderLanes & 42) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$69 = enqueueUpdate(provider, fiber, lane);\n null !== root$69 &&\n (scheduleUpdateOnFiber(root$69, provider, lane),\n entangleTransitions(root$69, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\n }\n return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$74) {\n setTimeout(function () {\n throw e$74;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 31:\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 4096);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n var nextPrimaryChildren = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextPrimaryChildren },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.sibling = nextProps),\n (workInProgress.child = nextPrimaryChildren),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n }\n var prevState = current.memoizedState;\n if (\n null !== prevState &&\n ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n showFallback\n )),\n (nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = bailoutOffscreenComponent(null, nextProps)));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextPrimaryChildren))\n ) {\n JSCompiler_temp =\n nextPrimaryChildren.nextSibling &&\n nextPrimaryChildren.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n 0 !== nextProps && nextProps !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(nextPrimaryChildren) ||\n renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n isSuspenseInstancePending(nextPrimaryChildren)\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextPrimaryChildren.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (prevState = current.child),\n (digest = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n null !== digest\n ? (nextPrimaryChildren = createWorkInProgress(\n digest,\n nextPrimaryChildren\n ))\n : ((nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2)),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (nextPrimaryChildren = current.child.memoizedState),\n null === nextPrimaryChildren\n ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n : ((showFallback = nextPrimaryChildren.cachePool),\n null !== showFallback\n ? ((prevState = CacheContext._currentValue),\n (showFallback =\n showFallback.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : showFallback))\n : (showFallback = getSuspendedCache()),\n (nextPrimaryChildren = {\n baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n cachePool: showFallback\n })),\n (nextProps.memoizedState = nextPrimaryChildren),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode,\n treeForkCount\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n treeForkCount: treeForkCount\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode),\n (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current,\n shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n push(suspenseStackCursor, suspenseContext);\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode,\n nextProps\n );\n break;\n case \"backwards\":\n case \"unstable_legacy-backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$102 = workInProgress.memoizedState;\n if (null !== state$102) {\n if (null !== state$102.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state$102 = 0 !== (renderLanes & workInProgress.childLanes);\n state$102 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state$102)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state$102) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (props = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (props[internalInstanceKey] = workInProgress),\n (props[internalPropsKey] = current),\n setInitialProperties(props, renderLanes, current),\n markNodeAsHoistable(props),\n (workInProgress.stateNode = props))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (props = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, props.value),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n if (type) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$106 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$106\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$106.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags & 65011712),\n (subtreeFlags |= child$107.flags & 65011712),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n else\n for (child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags),\n (subtreeFlags |= child$107.flags),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \"<script>\\x3c/script>\";\n nextResource = nextResource.removeChild(\n nextResource.firstChild\n );\n break;\n case \"select\":\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(\"select\", {\n is: newProps.is\n })\n : ownerDocument.createElement(\"select\");\n newProps.multiple\n ? (nextResource.multiple = !0)\n : newProps.size && (nextResource.size = newProps.size);\n break;\n default:\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(type, { is: newProps.is })\n : ownerDocument.createElement(type);\n }\n }\n nextResource[internalInstanceKey] = workInProgress;\n nextResource[internalPropsKey] = newProps;\n a: for (\n ownerDocument = workInProgress.child;\n null !== ownerDocument;\n\n ) {\n if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n nextResource.appendChild(ownerDocument.stateNode);\n else if (\n 4 !== ownerDocument.tag &&\n 27 !== ownerDocument.tag &&\n null !== ownerDocument.child\n ) {\n ownerDocument.child.return = ownerDocument;\n ownerDocument = ownerDocument.child;\n continue;\n }\n if (ownerDocument === workInProgress) break a;\n for (; null === ownerDocument.sibling; ) {\n if (\n null === ownerDocument.return ||\n ownerDocument.return === workInProgress\n )\n break a;\n ownerDocument = ownerDocument.return;\n }\n ownerDocument.sibling.return = ownerDocument.return;\n ownerDocument = ownerDocument.sibling;\n }\n workInProgress.stateNode = nextResource;\n a: switch (\n (setInitialProperties(nextResource, type, newProps), type)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n newProps = !!newProps.autoFocus;\n break a;\n case \"img\":\n newProps = !0;\n break a;\n default:\n newProps = !1;\n }\n newProps && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n workInProgress.type,\n null === current ? null : current.memoizedProps,\n workInProgress.pendingProps,\n renderLanes\n );\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress, !0);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 31:\n renderLanes = workInProgress.memoizedState;\n if (null === current || null !== current.memoizedState) {\n newProps = popHydrationState(workInProgress);\n if (null !== renderLanes) {\n if (null === current) {\n if (!newProps) throw Error(formatProdErrorMessage(318));\n current = workInProgress.memoizedState;\n current = null !== current ? current.dehydrated : null;\n if (!current) throw Error(formatProdErrorMessage(557));\n current[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n current = !1;\n } else\n (renderLanes = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = renderLanes),\n (current = !0);\n if (!current) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n if (0 !== (workInProgress.flags & 128))\n throw Error(formatProdErrorMessage(558));\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n renderLanes &&\n ((newProps = workInProgress.child),\n (type = null),\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool),\n (nextResource = null),\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (nextResource = newProps.memoizedState.cachePool.pool),\n nextResource !== type && (newProps.flags |= 2048));\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n newProps = workInProgress.memoizedState;\n if (null === newProps) return bubbleProperties(workInProgress), null;\n type = 0 !== (workInProgress.flags & 128);\n nextResource = newProps.rendering;\n if (null === nextResource)\n if (type) cutOffTailIfNeeded(newProps, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n nextResource = findFirstSuspended(current);\n if (null !== nextResource) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(newProps, !1);\n current = nextResource.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n isHydrating &&\n pushTreeFork(workInProgress, newProps.treeForkCount);\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== newProps.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!type)\n if (\n ((current = findFirstSuspended(nextResource)), null !== current)\n ) {\n if (\n ((workInProgress.flags |= 128),\n (type = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(newProps, !0),\n null === newProps.tail &&\n \"hidden\" === newProps.tailMode &&\n !nextResource.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - newProps.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n newProps.isBackwards\n ? ((nextResource.sibling = workInProgress.child),\n (workInProgress.child = nextResource))\n : ((current = newProps.last),\n null !== current\n ? (current.sibling = nextResource)\n : (workInProgress.child = nextResource),\n (newProps.last = nextResource));\n }\n if (null !== newProps.tail)\n return (\n (current = newProps.tail),\n (newProps.rendering = current),\n (newProps.tail = current.sibling),\n (newProps.renderingStartTime = now()),\n (current.sibling = null),\n (renderLanes = suspenseStackCursor.current),\n push(\n suspenseStackCursor,\n type ? (renderLanes & 1) | 2 : renderLanes & 1\n ),\n isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n current\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return null;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 31:\n if (null !== workInProgress.memoizedState) {\n popSuspenseHandler(workInProgress);\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 31:\n null !== interruptedWork.memoizedState &&\n popSuspenseHandler(interruptedWork);\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$140) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$140);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(node, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(node),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (\n 4 !== tag &&\n (27 === tag &&\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (\n 4 !== tag &&\n (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n if (\n 0 !== (root & 4) &&\n ((root = firstChild.updateQueue),\n (root = null !== root ? root.events : null),\n null !== root)\n )\n for (\n JSCompiler_temp = 0;\n JSCompiler_temp < root.length;\n JSCompiler_temp++\n )\n (anchorOffset = root[JSCompiler_temp]),\n (anchorOffset.ref.impl = anchorOffset.nextImpl);\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$139) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$139\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 31:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n prevProps = offscreenSubtreeIsHidden;\n var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevProps;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n break;\n case 30:\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearHydrationBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n ) {\n finishedRoot = finishedRoot.dehydrated;\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 31:\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n wakeable.then(retry, retry);\n }\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13886)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 31:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n hoistableRoot = null !== finishedWork.memoizedState;\n var wasHidden = null !== current && null !== current.memoizedState,\n prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n if (flags & 8192)\n a: for (\n root = finishedWork.stateNode,\n root._visibility = hoistableRoot\n ? root._visibility & -2\n : root._visibility | 1,\n hoistableRoot &&\n (null === current ||\n wasHidden ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n current = null,\n root = finishedWork;\n ;\n\n ) {\n if (5 === root.tag || 26 === root.tag) {\n if (null === current) {\n wasHidden = current = root;\n try {\n if (((currentResource = wasHidden.stateNode), hoistableRoot))\n (maybeNodes = currentResource.style),\n \"function\" === typeof maybeNodes.setProperty\n ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n : (maybeNodes.display = \"none\");\n else {\n i = wasHidden.stateNode;\n var styleProp = wasHidden.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n i.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n wasHidden.stateNode.nodeValue = hoistableRoot\n ? \"\"\n : wasHidden.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (18 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n var instance = wasHidden.stateNode;\n hoistableRoot\n ? hideOrUnhideDehydratedBoundary(instance, !0)\n : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n case 5:\n var parent$141 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n var before$142 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n break;\n case 3:\n case 4:\n var parent$143 = hostParentFiber.stateNode.containerInfo,\n before$144 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$144,\n parent$143\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 27:\n releaseSingletonInstance(finishedWork.stateNode);\n case 26:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 31:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 31:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256) || !1\n ));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects &&\n (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n parentFiber,\n committedLanes,\n suspendedState\n) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(\n parentFiber,\n committedLanes,\n suspendedState\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n fiber,\n committedLanes,\n suspendedState\n) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n suspendedState,\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n },\n cacheSignal: function () {\n return readContext(CacheContext).controller.signal;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n globalMostRecentTransitionTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n : null !== ReactSharedInternals.T\n ? requestTransitionLane()\n : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n if (0 === workInProgressDeferredLane)\n if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n var lane = nextTransitionDeferredLane;\n nextTransitionDeferredLane <<= 1;\n 0 === (nextTransitionDeferredLane & 3932160) &&\n (nextTransitionDeferredLane = 262144);\n workInProgressDeferredLane = lane;\n } else workInProgressDeferredLane = 536870912;\n lane = suspenseHandlerStackCursor.current;\n null !== lane && (lane.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 127) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n pendingEffectsLanes = lanes;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n \"Throttled\",\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n null,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n suspendedCommitReason = finishedWork.subtreeFlags;\n if (\n suspendedCommitReason & 8192 ||\n 16785408 === (suspendedCommitReason & 16785408)\n ) {\n suspendedCommitReason = {\n stylesheets: null,\n count: 0,\n imgCount: 0,\n imgBytes: 0,\n suspenseyImages: [],\n waitingForImages: !0,\n waitingForViewTransition: !1,\n unsuspend: noop$1\n };\n accumulateSuspenseyCommitOnFiber(\n finishedWork,\n lanes,\n suspendedCommitReason\n );\n var timeoutOffset =\n (lanes & 62914560) === lanes\n ? globalMostRecentFallbackTime - now()\n : (lanes & 4194048) === lanes\n ? globalMostRecentTransitionTime - now()\n : 0;\n timeoutOffset = waitForCommitToBeReady(\n suspendedCommitReason,\n timeoutOffset\n );\n if (null !== timeoutOffset) {\n pendingEffectsLanes = lanes;\n root.cancelPendingCommit = timeoutOffset(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n suspendedCommitReason,\n null,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$6 = 31 - clz32(lanes),\n lane = 1 << index$6;\n didAttemptEntireTree[index$6] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState$1 = null),\n (thenableIndexCounter$1 = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n pendingEffectsLanes = 0;\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n lanes |= root[index$4];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction shouldRemainOnPreviousScreen() {\n var handler = suspenseHandlerStackCursor.current;\n return null === handler\n ? !0\n : (workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null === shellBoundary\n ? !0\n : !1\n : (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n ? handler === shellBoundary\n : !1;\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$165) {\n handleThrow(root, thrownValue$165);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (\n resource\n ? preloadResource(resource)\n : hostFiber.stateNode.complete\n ) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$167) {\n handleThrow(root, thrownValue$167);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState$1 = null;\n thenableIndexCounter$1 = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n }\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root);\n var priorSelectionInformation = selectionInformation,\n curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = priorSelectionInformation.focusedElem,\n priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n var remainingLanes = root.pendingLanes;\n 0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n remainingLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = remainingLanes);\n }\n }\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n remainingLanes = root.pendingLanes;\n 0 !== (lanes & 261930) && 0 !== (remainingLanes & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 31:\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$170 = firstScheduledRoot; null !== root$170; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$170.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$170.suspendedLanes,\n pingedLanes = root$170.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$170,\n root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$170.cancelPendingCommit ||\n -1 !== root$170.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n root$170 = root$170.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane);\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n 0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$5 = 31 - clz32(lanes),\n lane = 1 << index$5,\n expirationTime = expirationTimes[index$5];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n if (0 === currentEventTransitionLane) {\n var actionScopeLane = currentEntangledLane;\n 0 === actionScopeLane &&\n ((actionScopeLane = nextTransitionUpdateLane),\n (nextTransitionUpdateLane <<= 1),\n 0 === (nextTransitionUpdateLane & 261888) &&\n (nextTransitionUpdateLane = 256));\n currentEventTransitionLane = actionScopeLane;\n }\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1577 = 0;\n i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n i$jscomp$inline_1577++\n) {\n var eventName$jscomp$inline_1578 =\n simpleEventPluginEvents[i$jscomp$inline_1577],\n domEventName$jscomp$inline_1579 =\n eventName$jscomp$inline_1578.toLowerCase(),\n capitalizedEvent$jscomp$inline_1580 =\n eventName$jscomp$inline_1578[0].toUpperCase() +\n eventName$jscomp$inline_1578.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1579,\n \"on\" + capitalizedEvent$jscomp$inline_1580\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = getParent;\n reactEventName = SyntheticEventCtor;\n instance = reactEventType;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = inCapturePhase(_instance)\n )\n lastHostComponent++;\n _instance = 0;\n for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n _instance++;\n for (; 0 < lastHostComponent - _instance; )\n (reactEventName = inCapturePhase(reactEventName)),\n lastHostComponent--;\n for (; 0 < _instance - lastHostComponent; )\n (instance = inCapturePhase(instance)), _instance--;\n for (; lastHostComponent--; ) {\n if (\n reactEventName === instance ||\n (null !== instance && reactEventName === instance.alternate)\n ) {\n inCapturePhase = reactEventName;\n break b;\n }\n reactEventName = inCapturePhase(reactEventName);\n instance = inCapturePhase(instance);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n \"string\" === typeof value\n ? \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n \"body\" !== tag &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n \"string\" === typeof value\n ? setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n }\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$184 = props[hasSrc];\n if (null != propValue$184)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$184;\n break;\n case \"type\":\n propValue = propValue$184;\n break;\n case \"checked\":\n checked = propValue$184;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$184;\n break;\n case \"value\":\n propKey = propValue$184;\n break;\n case \"defaultValue\":\n defaultValue = propValue$184;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$184)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$184, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$184 in props)\n props.hasOwnProperty(propValue$184) &&\n ((hasSrc = props[propValue$184]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$184,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$201 in nextProps) {\n var propKey = nextProps[propKey$201];\n lastProp = lastProps[propKey$201];\n if (\n nextProps.hasOwnProperty(propKey$201) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$201) {\n case \"type\":\n type = propKey;\n break;\n case \"name\":\n name = propKey;\n break;\n case \"checked\":\n checked = propKey;\n break;\n case \"defaultChecked\":\n defaultChecked = propKey;\n break;\n case \"value\":\n value = propKey;\n break;\n case \"defaultValue\":\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$201,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$201 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n propKey$201 = type;\n break;\n case \"defaultValue\":\n defaultValue = type;\n break;\n case \"multiple\":\n value = type;\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$201\n ? updateOptions(domElement, !!lastProps, propKey$201, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$201 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n propKey$201 = name;\n break;\n case \"defaultValue\":\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$201, propKey);\n return;\n case \"option\":\n for (var propKey$217 in lastProps)\n if (\n ((propKey$201 = lastProps[propKey$217]),\n lastProps.hasOwnProperty(propKey$217) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$217))\n )\n switch (propKey$217) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$217,\n null,\n nextProps,\n propKey$201\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$201 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$201 &&\n \"function\" !== typeof propKey$201 &&\n \"symbol\" !== typeof propKey$201;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$222 in lastProps)\n (propKey$201 = lastProps[propKey$222]),\n lastProps.hasOwnProperty(propKey$222) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$222) &&\n setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n for (checked in nextProps)\n if (\n ((propKey$201 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$201)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$227 in lastProps)\n (propKey$201 = lastProps[propKey$227]),\n lastProps.hasOwnProperty(propKey$227) &&\n void 0 !== propKey$201 &&\n !nextProps.hasOwnProperty(propKey$227) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$227,\n void 0,\n nextProps,\n propKey$201\n );\n for (defaultChecked in nextProps)\n (propKey$201 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$201 === propKey ||\n (void 0 === propKey$201 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$201,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$232 in lastProps)\n (propKey$201 = lastProps[propKey$232]),\n lastProps.hasOwnProperty(propKey$232) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$232) &&\n setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n for (lastProp in nextProps)\n (propKey$201 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$201 === propKey ||\n (null == propKey$201 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n switch (initiatorType) {\n case \"css\":\n case \"script\":\n case \"font\":\n case \"img\":\n case \"image\":\n case \"input\":\n case \"link\":\n return !0;\n default:\n return !1;\n }\n}\nfunction estimateBandwidth() {\n if (\"function\" === typeof performance.getEntriesByType) {\n for (\n var count = 0,\n bits = 0,\n resourceEntries = performance.getEntriesByType(\"resource\"),\n i = 0;\n i < resourceEntries.length;\n i++\n ) {\n var entry = resourceEntries[i],\n transferSize = entry.transferSize,\n initiatorType = entry.initiatorType,\n duration = entry.duration;\n if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n initiatorType = 0;\n duration = entry.responseEnd;\n for (i += 1; i < resourceEntries.length; i++) {\n var overlapEntry = resourceEntries[i],\n overlapStartTime = overlapEntry.startTime;\n if (overlapStartTime > duration) break;\n var overlapTransferSize = overlapEntry.transferSize,\n overlapInitiatorType = overlapEntry.initiatorType;\n overlapTransferSize &&\n isLikelyStaticResource(overlapInitiatorType) &&\n ((overlapEntry = overlapEntry.responseEnd),\n (initiatorType +=\n overlapTransferSize *\n (overlapEntry < duration\n ? 1\n : (duration - overlapStartTime) /\n (overlapEntry - overlapStartTime))));\n }\n --i;\n bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n count++;\n if (10 < count) break;\n }\n }\n if (0 < count) return bits / count / 1e6;\n }\n return navigator.connection &&\n ((count = navigator.connection.downlink), \"number\" === typeof count)\n ? count\n : 5;\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n var node = hydrationInstance,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(hydrationInstance);\n return;\n }\n depth--;\n } else if (\n \"$\" === node ||\n \"$?\" === node ||\n \"$~\" === node ||\n \"$!\" === node ||\n \"&\" === node\n )\n depth++;\n else if (\"html\" === node)\n releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n else if (\"head\" === node) {\n node = parentInstance.ownerDocument.head;\n releaseSingletonInstance(node);\n for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n nodeName = node$jscomp$0.nodeName;\n node$jscomp$0[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n node.removeChild(node$jscomp$0);\n node$jscomp$0 = nextNode$jscomp$0;\n }\n } else\n \"body\" === node &&\n releaseSingletonInstance(parentInstance.ownerDocument.body);\n node = nextNode;\n } while (node);\n retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n var node = suspenseInstance;\n suspenseInstance = 0;\n do {\n var nextNode = node.nextSibling;\n 1 === node.nodeType\n ? isHidden\n ? ((node._stashedDisplay = node.style.display),\n (node.style.display = \"none\"))\n : ((node.style.display = node._stashedDisplay || \"\"),\n \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n : 3 === node.nodeType &&\n (isHidden\n ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n : (node.nodeValue = node._stashedText || \"\"));\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node))\n if (0 === suspenseInstance) break;\n else suspenseInstance--;\n else\n (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n suspenseInstance++;\n node = nextNode;\n } while (node);\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n for (; 8 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$~\" === instance.data) instance._reactRetry = callback;\n else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"$~\" === nodeType ||\n \"&\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n hydrationInstance = hydrationInstance.nextSibling;\n for (var depth = 0; hydrationInstance; ) {\n if (8 === hydrationInstance.nodeType) {\n var data = hydrationInstance.data;\n if (\"/$\" === data || \"/&\" === data) {\n if (0 === depth)\n return getNextHydratable(hydrationInstance.nextSibling);\n depth--;\n } else\n (\"$\" !== data &&\n \"$!\" !== data &&\n \"$?\" !== data &&\n \"$~\" !== data &&\n \"&\" !== data) ||\n depth++;\n }\n hydrationInstance = hydrationInstance.nextSibling;\n }\n return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\n \"$\" === data ||\n \"$!\" === data ||\n \"$?\" === data ||\n \"$~\" === data ||\n \"&\" === data\n ) {\n if (0 === depth) return targetInstance;\n depth--;\n } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : 9 === container.nodeType\n ? container\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$243 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$244 = styles$243.get(type);\n resource$244 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$244 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$243.set(type, resource$244),\n (styles$243 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$243._p &&\n ((resource$244.instance = styles$243),\n (resource$244.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$243 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$244.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$244;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$249 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$249)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$249),\n markNodeAsHoistable(instance$249),\n instance$249\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$249 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$249);\n var linkInstance = instance$249;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$249, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$249, props.precedence, hoistableRoot);\n return (resource.instance = instance$249);\n case \"script\":\n instance$249 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$249)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$249)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count || 0 < state.imgCount\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4 + timeoutOffset);\n 0 < state.imgBytes &&\n 0 === estimatedBytesWithinLimit &&\n (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n var imgTimer = setTimeout(\n function () {\n state.waitingForImages = !1;\n if (\n 0 === state.count &&\n (state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets),\n state.unsuspend)\n ) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n },\n (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n timeoutOffset\n );\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n clearTimeout(imgTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(fiber, lane);\n null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n markRetryLaneIfNotHydrated(fiber, lane);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 31:\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (31 === tag) {\n targetNode = getActivityInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (31 === targetInst) {\n if (\n ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n function handleNavigate(event) {\n event.canIntercept &&\n \"react-transition\" === event.info &&\n event.intercept({\n handler: function () {\n return new Promise(function (resolve) {\n return (pendingResolve = resolve);\n });\n },\n focusReset: \"manual\",\n scroll: \"manual\"\n });\n }\n function handleNavigateComplete() {\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n isCancelled || setTimeout(startFakeNavigation, 20);\n }\n function startFakeNavigation() {\n if (!isCancelled && !navigation.transition) {\n var currentEntry = navigation.currentEntry;\n currentEntry &&\n null != currentEntry.url &&\n navigation.navigate(currentEntry.url, {\n state: currentEntry.getState(),\n info: \"react-transition\",\n history: \"replace\"\n });\n }\n }\n if (\"object\" === typeof navigation) {\n var isCancelled = !1,\n pendingResolve = null;\n navigation.addEventListener(\"navigate\", handleNavigate);\n navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n setTimeout(startFakeNavigation, 100);\n return function () {\n isCancelled = !0;\n navigation.removeEventListener(\"navigate\", handleNavigate);\n navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n };\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1840 = React.version;\nif (\n \"19.2.6\" !==\n isomorphicReactPackageVersion$jscomp$inline_1840\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1840,\n \"19.2.6\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2347 = {\n bundleType: 0,\n version: \"19.2.6\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.2.6\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2348.isDisabled &&\n hook$jscomp$inline_2348.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2348.inject(\n internals$jscomp$inline_2347\n )),\n (injectedHook = hook$jscomp$inline_2348);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n null,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.2.6\";\n", "'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n", "/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n", "const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return String(object);\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.includes('###') ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nconst _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => !nsSeparator.includes(c) && !keySeparator.includes(c));\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].includes(typeof next) && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace(/_/g, '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n args = args.map(a => isString(a) ? a.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, ' ') : a);\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n once(event, listener) {\n const wrapper = (...args) => {\n listener(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n return this;\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(event, ...args);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (!this.options.ns.includes(ns)) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.includes('.')) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.includes('.')) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.includes('.')) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.includes('.')) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n const keySeparator = opts?.keySeparator ?? '.';\n const nsSeparator = opts?.nsSeparator ?? ':';\n const strict = opts?.enableSelector === 'strict';\n if (path.length > 1 && nsSeparator) {\n const ns = opts?.ns;\n const nsList = strict ? Array.isArray(ns) ? ns : ns ? [ns] : null : Array.isArray(ns) ? ns : null;\n if (nsList) {\n const candidates = strict ? nsList : nsList.length > 1 ? nsList.slice(1) : [];\n if (candidates.includes(path[0])) {\n return `${path[0]}${nsSeparator}${path.slice(1).join(keySeparator)}`;\n }\n }\n }\n return path.join(keySeparator);\n}\n\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n this.checkedLoadedFor = {};\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n if (resolved?.res === undefined) return false;\n const isObject = shouldHandleAsObject(resolved.res);\n if (opt.returnObjects === false && isObject) {\n return false;\n }\n return true;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.includes(nsSeparator);\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.includes(parts[0])) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : String(k));\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && !noObject.includes(resType) && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, needsPluralHandling && !updateMissing ? `${key}${this.pluralResolver.getSuffix(lng, opt.count, opt)}` : key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && !suffixes.includes(`${this.options.pluralSeparator}zero`)) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n if (Array.isArray(keys)) keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : k);\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!this.checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n this.checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && option.startsWith(prefix) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.includes('-')) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.includes(code);\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return true;\n if (!supportedLng.includes('-') && !lngOnly.includes('-')) return false;\n if (supportedLng.includes('-') && !lngOnly.includes('-') && supportedLng.slice(0, supportedLng.indexOf('-')) === lngOnly) return true;\n if (supportedLng.startsWith(lngOnly) && lngOnly.length > 1) return true;\n return false;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.includes('-') || code.includes('_'))) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (!codes.includes(fc)) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (typeof Intl === 'undefined') {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix ? regexEscape(unescapePrefix) : '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix ? regexEscape(unescapeSuffix) : '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (!key.includes(this.formatSeparator)) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n if (!this.escapeValue && typeof str === 'string' && /\\$t\\([^)]*\\{[^}]*\\{\\{/.test(str)) {\n this.logger.warn('nesting options string contains interpolated variables with escapeValue: false \u2014 ' + 'if any of those values are attacker-controlled they can inject additional ' + 'nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing ' + 'it to t(), or keep escapeValue: true.');\n }\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (!key.includes(sep)) return key;\n const c = key.split(new RegExp(`${regexEscape(sep)}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || (matchedDoubleQuotes?.length ?? 0) % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.includes(this.prefix)) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.includes('(')) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].slice(0, -1);\n if (formatName === 'currency' && !optStr.includes(':')) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && !optStr.includes(':')) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n if (!format) return value;\n if (value == null) return value;\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && !formats[0].includes(')') && formats.find(f => f.includes(')'))) {\n const lastIndex = formats.findIndex(f => f.includes(')'));\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read(lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n enableSelector: false,\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && !options.supportedLngs.includes('cimode')) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (!options.ns.includes('translation')) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator\n });\n if (formatter) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if ((this.languages || this.isLanguageChangingTo) && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (!toLoad.includes(l)) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].includes(l)) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].includes(lngInLngs)) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && !this.languages.includes(l) && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix, fixedOpts) {\n const scopeNs = fixedOpts?.scopeNs;\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n const explicitCallNs = o.ns !== undefined && o.ns !== null;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const selectorOpts = {\n ...this.options,\n ...o\n };\n if (Array.isArray(scopeNs) && !explicitCallNs) selectorOpts.ns = scopeNs;\n if (typeof o.keyPrefix === 'function') o.keyPrefix = keysFromSelector(o.keyPrefix, selectorOpts);\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, selectorOpts);\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, selectorOpts);\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (!this.options.ns.includes(n)) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => !preloaded.includes(lng) && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.includes(languageUtils.getLanguagePartFromCode(lng)) || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n const instance = new I18n(options, callback);\n instance.createInstance = I18n.createInstance;\n return instance;\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n if (options.interpolation) {\n const defOpts = get();\n const mergedInterpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation,\n ...options.interpolation\n };\n const mergedForInterpolator = {\n ...mergedOptions,\n interpolation: mergedInterpolation\n };\n clone.services.interpolator = new Interpolator(mergedForInterpolator);\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n", "function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };", "function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };", "import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nfunction createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n}\n\nfunction getDefaults() {\n return {\n handleEmptyResourcesAsFailed: true,\n cacheHitMode: 'none',\n retryOnFailure: false\n // reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000\n // refreshExpirationTime: 60 * 60 * 1000\n };\n}\nfunction handleCorrectReadFunction(backend, language, namespace, resolver) {\n var fc = backend.read.bind(backend);\n if (fc.length === 2) {\n // no callback\n try {\n var r = fc(language, namespace);\n if (r && typeof r.then === 'function') {\n // promise\n r.then(function (data) {\n return resolver(null, data);\n })[\"catch\"](resolver);\n } else {\n // sync\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n\n // normal with callback\n fc(language, namespace, resolver);\n}\nvar Backend = /*#__PURE__*/function () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nextOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, Backend);\n this.backends = [];\n this.type = 'backend';\n this.allOptions = i18nextOptions;\n this.init(services, options);\n }\n return _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nextOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n this.allOptions = i18nextOptions;\n if (this.options.backends && this.options.backends.length > 1 && (this.allOptions.saveMissing || this.allOptions.updateMissing)) {\n if (this.services && this.services.logger) {\n this.services.logger.warn('i18next-chained-backend: Using multiple backends in combination with saveMissing/updateMissing is not recommended, as it may trigger based on stale data.');\n }\n }\n this.options.backends && this.options.backends.forEach(function (b, i) {\n _this.backends[i] = _this.backends[i] || createClassOnDemand(b);\n _this.backends[i].init(services, _this.options.backendOptions && _this.options.backendOptions[i] || {}, i18nextOptions);\n });\n if (this.services && this.options.reloadInterval) {\n setInterval(function () {\n return _this.reload();\n }, this.options.reloadInterval);\n }\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var _this2 = this;\n var bLen = this.backends.length;\n var _loadPosition = function loadPosition(pos) {\n if (pos >= bLen) return callback(new Error('non of the backend loaded data'), _this2.options.retryOnFailure); // failed, signal retry to i18next only if explicitly enabled\n var isLastBackend = pos === bLen - 1;\n var lengthCheckAmount = _this2.options.handleEmptyResourcesAsFailed && !isLastBackend ? 0 : -1;\n var backend = _this2.backends[pos];\n if (backend.read) {\n handleCorrectReadFunction(backend, language, namespace, function (err, data, savedAt) {\n if (!err && data && Object.keys(data).length > lengthCheckAmount) {\n callback(null, data, pos);\n _savePosition(pos - 1, data); // save one in front\n if (backend.save && _this2.options.cacheHitMode && ['refresh', 'refreshAndUpdateStore'].indexOf(_this2.options.cacheHitMode) > -1) {\n if (savedAt && _this2.options.refreshExpirationTime && savedAt + _this2.options.refreshExpirationTime > Date.now()) return;\n var nextBackend = _this2.backends[pos + 1];\n if (nextBackend && nextBackend.read) {\n handleCorrectReadFunction(nextBackend, language, namespace, function (err, data) {\n if (err) return;\n if (!data) return;\n if (Object.keys(data).length <= lengthCheckAmount) return;\n _savePosition(pos, data);\n if (_this2.options.cacheHitMode !== 'refreshAndUpdateStore') return;\n if (_this2.services && _this2.services.resourceStore) {\n _this2.services.resourceStore.addResourceBundle(language, namespace, data);\n }\n });\n }\n }\n } else {\n _loadPosition(pos + 1); // try load from next\n }\n });\n } else {\n _loadPosition(pos + 1); // try load from next\n }\n };\n var _savePosition = function savePosition(pos, data) {\n if (pos < 0) return;\n var backend = _this2.backends[pos];\n if (backend.save) {\n backend.save(language, namespace, data);\n _savePosition(pos - 1, data);\n } else {\n _savePosition(pos - 1, data);\n }\n };\n _loadPosition(0);\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue) {\n var clb = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function () {};\n var opts = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n this.backends.forEach(function (b) {\n if (!b.create) return;\n var fc = b.create.bind(b);\n if (fc.length < 6) {\n // no callback\n try {\n var r;\n if (fc.length === 5) {\n // future callback-less api for i18next-locize-backend\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n // promise\n r.then(function (data) {\n return clb(null, data);\n })[\"catch\"](clb);\n } else {\n // sync\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n return;\n }\n\n // normal with callback\n fc(languages, namespace, key, fallbackValue, clb /* unused callback */, opts);\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this3 = this;\n var _this$services = this.services,\n backendConnector = _this$services.backendConnector,\n languageUtils = _this$services.languageUtils,\n logger = _this$services.logger;\n var currentLanguage = backendConnector.language;\n if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return; // avoid loading resources for cimode\n\n var toLoad = [];\n var append = function append(lng) {\n var lngs = languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n append(currentLanguage);\n if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n return append(l);\n });\n toLoad.forEach(function (lng) {\n _this3.allOptions.ns.forEach(function (ns) {\n backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n });\n });\n });\n }\n }]);\n}();\nBackend.type = 'backend';\n\nexport { Backend as default };\n", "//#region lib/utils.js\nconst arr = [];\narr.forEach;\narr.slice;\nconst UNSAFE_KEYS$1 = [\n\t\"__proto__\",\n\t\"constructor\",\n\t\"prototype\"\n];\nfunction isSafeUrlSegmentBase(v) {\n\tif (typeof v !== \"string\") return false;\n\tif (v.length === 0 || v.length > 128) return false;\n\tif (UNSAFE_KEYS$1.indexOf(v) > -1) return false;\n\tif (v.indexOf(\"..\") > -1) return false;\n\tif (v.indexOf(\"\\\\\") > -1) return false;\n\tif (/[?#%\\s@]/.test(v)) return false;\n\tif (/[\\x00-\\x1F\\x7F]/.test(v)) return false;\n\treturn true;\n}\nfunction isSafeLangUrlSegment(v) {\n\tif (!isSafeUrlSegmentBase(v)) return false;\n\tif (v.indexOf(\"/\") > -1) return false;\n\treturn true;\n}\nfunction isSafeNsUrlSegment(v) {\n\treturn isSafeUrlSegmentBase(v);\n}\nconst SAFETY_CHECK_BY_KEY = {\n\tlng: isSafeLangUrlSegment,\n\tns: isSafeNsUrlSegment\n};\nfunction sanitizeLogValue(v) {\n\tif (typeof v !== \"string\") return v;\n\treturn v.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, \" \");\n}\nfunction redactUrlCredentials(u) {\n\tif (typeof u !== \"string\" || u.length === 0) return u;\n\ttry {\n\t\tconst parsed = new URL(u);\n\t\tif (parsed.username || parsed.password) {\n\t\t\tparsed.username = \"\";\n\t\t\tparsed.password = \"\";\n\t\t\treturn parsed.toString();\n\t\t}\n\t\treturn u;\n\t} catch (e) {\n\t\treturn u.replace(/(\\/\\/)[^/@\\s]+@/g, \"$1\");\n\t}\n}\nfunction hasXMLHttpRequest() {\n\treturn typeof XMLHttpRequest === \"function\" || typeof XMLHttpRequest === \"object\";\n}\n/**\n* Determine whether the given `maybePromise` is a Promise.\n*\n* @param {*} maybePromise\n*\n* @returns {Boolean}\n*/\nfunction isPromise(maybePromise) {\n\treturn !!maybePromise && typeof maybePromise.then === \"function\";\n}\n/**\n* Convert any value to a Promise than will resolve to this value.\n*\n* @param {*} maybePromise\n*\n* @returns {Promise}\n*/\nfunction makePromise(maybePromise) {\n\tif (isPromise(maybePromise)) return maybePromise;\n\treturn Promise.resolve(maybePromise);\n}\nconst interpolationRegexp = /\\{\\{(.+?)\\}\\}/g;\nfunction interpolateUrl(str, data) {\n\tlet unsafe = false;\n\tconst result = str.replace(interpolationRegexp, (match, key) => {\n\t\tconst k = key.trim();\n\t\tif (UNSAFE_KEYS$1.indexOf(k) > -1) return match;\n\t\tconst value = data[k];\n\t\tif (value == null) return match;\n\t\tconst check = SAFETY_CHECK_BY_KEY[k] || isSafeLangUrlSegment;\n\t\tconst segments = String(value).split(\"+\");\n\t\tfor (const seg of segments) if (!check(seg)) {\n\t\t\tunsafe = true;\n\t\t\treturn match;\n\t\t}\n\t\treturn segments.join(\"+\");\n\t});\n\treturn unsafe ? null : result;\n}\n//#endregion\n//#region lib/request.js\nconst g = typeof globalThis !== \"undefined\" ? globalThis : typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : void 0;\nlet fetchApi;\nif (typeof fetch === \"function\") fetchApi = fetch;\nelse if (g && typeof g.fetch === \"function\") fetchApi = g.fetch;\nconst XmlHttpRequestApi = hasXMLHttpRequest() && g ? g.XMLHttpRequest : void 0;\nconst ActiveXObjectApi = typeof ActiveXObject === \"function\" && g ? g.ActiveXObject : void 0;\nconst UNSAFE_KEYS = [\n\t\"__proto__\",\n\t\"constructor\",\n\t\"prototype\"\n];\nconst addQueryString = (url, params) => {\n\tif (params && typeof params === \"object\") {\n\t\tlet queryString = \"\";\n\t\tfor (const paramName of Object.keys(params)) {\n\t\t\tif (UNSAFE_KEYS.indexOf(paramName) > -1) continue;\n\t\t\tqueryString += \"&\" + encodeURIComponent(paramName) + \"=\" + encodeURIComponent(params[paramName]);\n\t\t}\n\t\tif (!queryString) return url;\n\t\turl = url + (url.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + queryString.slice(1);\n\t}\n\treturn url;\n};\nconst fetchIt = (url, fetchOptions, callback, altFetch) => {\n\tconst resolver = (response) => {\n\t\tif (!response.ok) return callback(response.statusText || \"Error\", { status: response.status });\n\t\tresponse.text().then((data) => {\n\t\t\tcallback(null, {\n\t\t\t\tstatus: response.status,\n\t\t\t\tdata\n\t\t\t});\n\t\t}).catch(callback);\n\t};\n\tif (altFetch) {\n\t\tconst altResponse = altFetch(url, fetchOptions);\n\t\tif (altResponse instanceof Promise) {\n\t\t\taltResponse.then(resolver).catch(callback);\n\t\t\treturn;\n\t\t}\n\t}\n\tif (typeof fetch === \"function\") fetch(url, fetchOptions).then(resolver).catch(callback);\n\telse fetchApi(url, fetchOptions).then(resolver).catch(callback);\n};\nconst requestWithFetch = (options, url, payload, callback) => {\n\tif (options.queryStringParams) url = addQueryString(url, options.queryStringParams);\n\tconst headers = { ...typeof options.customHeaders === \"function\" ? options.customHeaders() : options.customHeaders };\n\tif (typeof window === \"undefined\" && typeof global !== \"undefined\" && typeof global.process !== \"undefined\" && global.process.versions && global.process.versions.node) headers[\"User-Agent\"] = `i18next-http-backend (node/${global.process.version}; ${global.process.platform} ${global.process.arch})`;\n\tif (payload) headers[\"Content-Type\"] = \"application/json\";\n\tconst reqOptions = typeof options.requestOptions === \"function\" ? options.requestOptions(payload) : options.requestOptions;\n\tconst fetchOptions = {\n\t\tmethod: payload ? \"POST\" : \"GET\",\n\t\tbody: payload ? options.stringify(payload) : void 0,\n\t\theaders,\n\t\t...options._omitFetchOptions ? {} : reqOptions\n\t};\n\tconst altFetch = typeof options.alternateFetch === \"function\" && options.alternateFetch.length >= 1 ? options.alternateFetch : void 0;\n\ttry {\n\t\tfetchIt(url, fetchOptions, callback, altFetch);\n\t} catch (e) {\n\t\tif (!reqOptions || Object.keys(reqOptions).length === 0 || !e.message || e.message.indexOf(\"not implemented\") < 0) return callback(e);\n\t\ttry {\n\t\t\tObject.keys(reqOptions).forEach((opt) => {\n\t\t\t\tdelete fetchOptions[opt];\n\t\t\t});\n\t\t\tfetchIt(url, fetchOptions, callback, altFetch);\n\t\t\toptions._omitFetchOptions = true;\n\t\t} catch (err) {\n\t\t\tcallback(err);\n\t\t}\n\t}\n};\nconst requestWithXmlHttpRequest = (options, url, payload, callback) => {\n\tif (payload && typeof payload === \"object\") payload = addQueryString(\"\", payload).slice(1);\n\tif (options.queryStringParams) url = addQueryString(url, options.queryStringParams);\n\ttry {\n\t\tconst x = XmlHttpRequestApi ? new XmlHttpRequestApi() : new ActiveXObjectApi(\"MSXML2.XMLHTTP.3.0\");\n\t\tx.open(payload ? \"POST\" : \"GET\", url, 1);\n\t\tif (!options.crossDomain) x.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\t\tx.withCredentials = !!options.withCredentials;\n\t\tif (payload) x.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\tif (x.overrideMimeType) x.overrideMimeType(\"application/json\");\n\t\tlet h = options.customHeaders;\n\t\th = typeof h === \"function\" ? h() : h;\n\t\tif (h) for (const i of Object.keys(h)) {\n\t\t\tif (UNSAFE_KEYS.indexOf(i) > -1) continue;\n\t\t\tx.setRequestHeader(i, h[i]);\n\t\t}\n\t\tx.onreadystatechange = () => {\n\t\t\tx.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n\t\t\t\tstatus: x.status,\n\t\t\t\tdata: x.responseText\n\t\t\t});\n\t\t};\n\t\tx.send(payload);\n\t} catch (e) {\n\t\tconsole && console.log(e);\n\t}\n};\nconst request = (options, url, payload, callback) => {\n\tif (typeof payload === \"function\") {\n\t\tcallback = payload;\n\t\tpayload = void 0;\n\t}\n\tcallback = callback || (() => {});\n\tif (fetchApi && url.indexOf(\"file:\") !== 0) return requestWithFetch(options, url, payload, callback);\n\tif (hasXMLHttpRequest() || typeof ActiveXObject === \"function\") return requestWithXmlHttpRequest(options, url, payload, callback);\n\tcallback(/* @__PURE__ */ new Error(\"No fetch and no xhr implementation found!\"));\n};\n//#endregion\n//#region lib/index.js\nconst getDefaults = () => {\n\treturn {\n\t\tloadPath: \"/locales/{{lng}}/{{ns}}.json\",\n\t\taddPath: \"/locales/add/{{lng}}/{{ns}}\",\n\t\tparse: (data) => JSON.parse(data),\n\t\tstringify: JSON.stringify,\n\t\tparsePayload: (namespace, key, fallbackValue) => ({ [key]: fallbackValue || \"\" }),\n\t\tparseLoadPayload: (languages, namespaces) => void 0,\n\t\trequest,\n\t\treloadInterval: typeof window !== \"undefined\" ? false : 3600 * 1e3,\n\t\tcustomHeaders: {},\n\t\tqueryStringParams: {},\n\t\tcrossDomain: false,\n\t\twithCredentials: false,\n\t\toverrideMimeType: false,\n\t\trequestOptions: {\n\t\t\tmode: \"cors\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\tcache: \"default\"\n\t\t}\n\t};\n};\nvar Backend = class {\n\tconstructor(services, options = {}, allOptions = {}) {\n\t\tthis.services = services;\n\t\tthis.options = options;\n\t\tthis.allOptions = allOptions;\n\t\tthis.type = \"backend\";\n\t\tthis.init(services, options, allOptions);\n\t}\n\tinit(services, options = {}, allOptions = {}) {\n\t\tthis.services = services;\n\t\tthis.options = {\n\t\t\t...getDefaults(),\n\t\t\t...this.options || {},\n\t\t\t...options\n\t\t};\n\t\tthis.allOptions = allOptions;\n\t\tif (this.services && this.options.reloadInterval) {\n\t\t\tconst timer = setInterval(() => this.reload(), this.options.reloadInterval);\n\t\t\tif (typeof timer === \"object\" && typeof timer.unref === \"function\") timer.unref();\n\t\t}\n\t}\n\treadMulti(languages, namespaces, callback) {\n\t\tthis._readAny(languages, languages, namespaces, namespaces, callback);\n\t}\n\tread(language, namespace, callback) {\n\t\tthis._readAny([language], language, [namespace], namespace, callback);\n\t}\n\t_readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n\t\tlet loadPath = this.options.loadPath;\n\t\tif (typeof this.options.loadPath === \"function\") loadPath = this.options.loadPath(languages, namespaces);\n\t\tloadPath = makePromise(loadPath);\n\t\tloadPath.then((resolvedLoadPath) => {\n\t\t\tif (!resolvedLoadPath) return callback(null, {});\n\t\t\tconst url = interpolateUrl(resolvedLoadPath, {\n\t\t\t\tlng: languages.join(\"+\"),\n\t\t\t\tns: namespaces.join(\"+\")\n\t\t\t});\n\t\t\tif (url == null) {\n\t\t\t\tconst safeLngs = languages.map(sanitizeLogValue).join(\", \");\n\t\t\t\tconst safeNss = namespaces.map(sanitizeLogValue).join(\", \");\n\t\t\t\treturn callback(/* @__PURE__ */ new Error(\"i18next-http-backend: unsafe lng/ns value \u2014 refusing to build request URL for languages=[\" + safeLngs + \"] namespaces=[\" + safeNss + \"]\"), false);\n\t\t\t}\n\t\t\tthis.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n\t\t});\n\t}\n\tloadUrl(url, callback, languages, namespaces) {\n\t\tconst lng = typeof languages === \"string\" ? [languages] : languages;\n\t\tconst ns = typeof namespaces === \"string\" ? [namespaces] : namespaces;\n\t\tconst payload = this.options.parseLoadPayload(lng, ns);\n\t\tconst safeUrl = sanitizeLogValue(redactUrlCredentials(url));\n\t\tthis.options.request(this.options, url, payload, (err, res) => {\n\t\t\tif (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback(\"failed loading \" + safeUrl + \"; status code: \" + res.status, true);\n\t\t\tif (res && res.status >= 400 && res.status < 500) return callback(\"failed loading \" + safeUrl + \"; status code: \" + res.status, false);\n\t\t\tif (!res && err && err.message) {\n\t\t\t\tconst errorMessage = err.message.toLowerCase();\n\t\t\t\tif ([\n\t\t\t\t\t\"failed\",\n\t\t\t\t\t\"fetch\",\n\t\t\t\t\t\"network\",\n\t\t\t\t\t\"load\"\n\t\t\t\t].find((term) => errorMessage.indexOf(term) > -1)) return callback(\"failed loading \" + safeUrl + \": \" + sanitizeLogValue(err.message), true);\n\t\t\t}\n\t\t\tif (err) return callback(err, false);\n\t\t\tlet ret, parseErr;\n\t\t\ttry {\n\t\t\t\tif (typeof res.data === \"string\") ret = this.options.parse(res.data, languages, namespaces);\n\t\t\t\telse ret = res.data;\n\t\t\t} catch (e) {\n\t\t\t\tparseErr = \"failed parsing \" + safeUrl + \" to json\";\n\t\t\t}\n\t\t\tif (parseErr) return callback(parseErr, false);\n\t\t\tcallback(null, ret);\n\t\t});\n\t}\n\tcreate(languages, namespace, key, fallbackValue, callback) {\n\t\tif (!this.options.addPath) return;\n\t\tif (typeof languages === \"string\") languages = [languages];\n\t\tconst payload = this.options.parsePayload(namespace, key, fallbackValue);\n\t\tlet finished = 0;\n\t\tconst dataArray = [];\n\t\tconst resArray = [];\n\t\tlanguages.forEach((lng) => {\n\t\t\tlet addPath = this.options.addPath;\n\t\t\tif (typeof this.options.addPath === \"function\") addPath = this.options.addPath(lng, namespace);\n\t\t\tconst url = interpolateUrl(addPath, {\n\t\t\t\tlng,\n\t\t\t\tns: namespace\n\t\t\t});\n\t\t\tif (url == null) {\n\t\t\t\tfinished += 1;\n\t\t\t\tif (callback && finished === languages.length) callback(dataArray, resArray);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.options.request(this.options, url, payload, (data, res) => {\n\t\t\t\tfinished += 1;\n\t\t\t\tdataArray.push(data);\n\t\t\t\tresArray.push(res);\n\t\t\t\tif (finished === languages.length) {\n\t\t\t\t\tif (typeof callback === \"function\") callback(dataArray, resArray);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\treload() {\n\t\tconst { backendConnector, languageUtils, logger } = this.services;\n\t\tconst currentLanguage = backendConnector.language;\n\t\tif (currentLanguage && currentLanguage.toLowerCase() === \"cimode\") return;\n\t\tconst toLoad = [];\n\t\tconst append = (lng) => {\n\t\t\tlanguageUtils.toResolveHierarchy(lng).forEach((l) => {\n\t\t\t\tif (toLoad.indexOf(l) < 0) toLoad.push(l);\n\t\t\t});\n\t\t};\n\t\tappend(currentLanguage);\n\t\tif (this.allOptions.preload) this.allOptions.preload.forEach((l) => append(l));\n\t\ttoLoad.forEach((lng) => {\n\t\t\tthis.allOptions.ns.forEach((ns) => {\n\t\t\t\tbackendConnector.read(lng, ns, \"read\", null, null, (err, data) => {\n\t\t\t\t\tif (err) logger.warn(`loading namespace ${ns} for language ${lng} failed`, err);\n\t\t\t\t\tif (!err && data) logger.log(`loaded namespace ${ns} for language ${lng}`, data);\n\t\t\t\t\tbackendConnector.loaded(`${lng}|${ns}`, err, data);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n};\nBackend.type = \"backend\";\n//#endregion\nexport { Backend as default };\n", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/* eslint-disable max-classes-per-file */\nvar Storage = /*#__PURE__*/function () {\n function Storage(options) {\n _classCallCheck(this, Storage);\n this.store = options.store;\n }\n return _createClass(Storage, [{\n key: \"setItem\",\n value: function setItem(key, value) {\n if (this.store) {\n try {\n this.store.setItem(key, value);\n } catch (e) {\n // f.log('failed to set value for key \"' + key + '\" to localStorage.');\n }\n }\n }\n }, {\n key: \"getItem\",\n value: function getItem(key, value) {\n if (this.store) {\n try {\n return this.store.getItem(key, value);\n } catch (e) {\n // f.log('failed to get value for key \"' + key + '\" from localStorage.');\n }\n }\n return undefined;\n }\n }]);\n}();\nfunction getDefaults() {\n var store = null;\n try {\n store = window.localStorage;\n } catch (e) {\n if (typeof window !== 'undefined') {\n console.log('Failed to load local storage.', e);\n }\n }\n return {\n prefix: 'i18next_res_',\n expirationTime: 7 * 24 * 60 * 60 * 1000,\n defaultVersion: undefined,\n getVersion: undefined,\n versions: {},\n store: store\n };\n}\nvar Cache = /*#__PURE__*/function () {\n function Cache(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Cache);\n this.init(services, options);\n this.type = 'backend';\n }\n return _createClass(Cache, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.services = services;\n this.options = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), this.options), options);\n this.storage = new Storage(this.options);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var nowMS = Date.now();\n if (!this.storage.store) {\n return callback(null, null);\n }\n var local = this.storage.getItem(\"\".concat(this.options.prefix).concat(language, \"-\").concat(namespace));\n if (local) {\n local = JSON.parse(local);\n var version = this.getVersion(language, namespace);\n if (\n // expiration field is mandatory, and should not be expired\n local.i18nStamp && local.i18nStamp + this.options.expirationTime > nowMS &&\n // there should be no language version set, or if it is, it should match the one in translation\n version === local.i18nVersion) {\n var i18nStamp = local.i18nStamp;\n delete local.i18nVersion;\n delete local.i18nStamp;\n return callback(null, local, i18nStamp);\n }\n }\n return callback(null, null);\n }\n }, {\n key: \"save\",\n value: function save(language, namespace, data) {\n if (this.storage.store) {\n data.i18nStamp = Date.now();\n\n // language version (if set)\n var version = this.getVersion(language, namespace);\n if (version) {\n data.i18nVersion = version;\n }\n\n // save\n this.storage.setItem(\"\".concat(this.options.prefix).concat(language, \"-\").concat(namespace), JSON.stringify(data));\n }\n }\n }, {\n key: \"getVersion\",\n value: function getVersion(language, namespace) {\n var _this$options$getVers, _this$options;\n return ((_this$options$getVers = (_this$options = this.options).getVersion) === null || _this$options$getVers === void 0 ? void 0 : _this$options$getVers.call(_this$options, language, namespace)) || this.options.versions[language] || this.options.defaultVersion;\n }\n }]);\n}();\nCache.type = 'backend';\n\nexport { Cache as default };\n", "import { useContext } from 'react';\nimport { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport { nodesToString };\nexport function Trans({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n}) {\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n const t = tFromProps || i18n?.t.bind(i18n);\n return TransWithoutContext({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions,\n values,\n defaults,\n components,\n ns: ns || t?.ns || defaultNSFromContext || i18n?.options?.defaultNS,\n i18n,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n });\n}", "import { Fragment, isValidElement, cloneElement, createElement, Children } from 'react';\nimport { keyFromSelector } from 'i18next';\nimport HTML from 'html-parse-stringify';\nimport { isObject, isString, warn, warnOnce } from './utils.js';\nimport { getDefaults } from './defaults.js';\nimport { getI18n } from './i18nInstance.js';\nimport { unescape } from './unescape.js';\nconst hasChildren = (node, checkLength) => {\n if (!node) return false;\n const base = node.props?.children ?? node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n};\nconst getChildren = node => {\n if (!node) return [];\n const children = node.props?.children ?? node.children;\n return node.props?.i18nIsDynamicList ? getAsArray(children) : children;\n};\nconst hasValidReactChildren = children => Array.isArray(children) && children.every(isValidElement);\nconst getAsArray = data => Array.isArray(data) ? data : [data];\nconst mergeProps = (source, target) => {\n const newTarget = {\n ...target\n };\n newTarget.props = {\n ...target.props,\n ...source.props\n };\n return newTarget;\n};\nconst getValuesFromChildren = children => {\n const values = {};\n if (!children) return values;\n const getData = childs => {\n const childrenArray = getAsArray(childs);\n childrenArray.forEach(child => {\n if (isString(child)) return;\n if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(values, child);\n });\n };\n getData(children);\n return values;\n};\nexport const nodesToString = (children, i18nOptions, i18n, i18nKey) => {\n if (!children) return '';\n let stringNode = '';\n const childrenArray = getAsArray(children);\n const keepArray = i18nOptions?.transSupportBasicHtmlNodes ? i18nOptions.transKeepBasicHtmlNodesFor ?? [] : [];\n childrenArray.forEach((child, childIndex) => {\n if (isString(child)) {\n stringNode += `${child}`;\n return;\n }\n if (isValidElement(child)) {\n const {\n props,\n type\n } = child;\n const childPropsCount = Object.keys(props).length;\n const shouldKeepChild = keepArray.indexOf(type) > -1;\n const childChildren = props.children;\n if (!childChildren && shouldKeepChild && !childPropsCount) {\n stringNode += `<${type}/>`;\n return;\n }\n if (!childChildren && (!shouldKeepChild || childPropsCount) || props.i18nIsDynamicList) {\n stringNode += `<${childIndex}></${childIndex}>`;\n return;\n }\n if (shouldKeepChild && childPropsCount <= 1) {\n const cnt = isString(childChildren) ? childChildren : nodesToString(childChildren, i18nOptions, i18n, i18nKey);\n stringNode += `<${type}>${cnt}</${type}>`;\n return;\n }\n const content = nodesToString(childChildren, i18nOptions, i18n, i18nKey);\n stringNode += `<${childIndex}>${content}</${childIndex}>`;\n return;\n }\n if (child === null) {\n warn(i18n, 'TRANS_NULL_VALUE', `Passed in a null value as child`, {\n i18nKey\n });\n return;\n }\n if (isObject(child)) {\n const {\n format,\n ...clone\n } = child;\n const keys = Object.keys(clone);\n if (keys.length === 1) {\n const value = format ? `${keys[0]}, ${format}` : keys[0];\n stringNode += `{{${value}}}`;\n return;\n }\n warn(i18n, 'TRANS_INVALID_OBJ', `Invalid child - Object should only have keys {{ value, format }} (format is optional).`, {\n i18nKey,\n child\n });\n return;\n }\n warn(i18n, 'TRANS_INVALID_VAR', `Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`, {\n i18nKey,\n child\n });\n });\n return stringNode;\n};\nconst escapeLiteralLessThan = (str, keepArray = [], knownComponentsMap = {}) => {\n if (!str) return str;\n const knownNames = Object.keys(knownComponentsMap);\n const allValidNames = [...keepArray, ...knownNames];\n let result = '';\n let i = 0;\n while (i < str.length) {\n if (str[i] === '<') {\n let isValidTag = false;\n const closingMatch = str.slice(i).match(/^<\\/(\\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);\n if (closingMatch) {\n const tagName = closingMatch[1];\n if (/^\\d+$/.test(tagName) || allValidNames.includes(tagName)) {\n isValidTag = true;\n result += closingMatch[0];\n i += closingMatch[0].length;\n }\n }\n if (!isValidTag) {\n const openingMatch = str.slice(i).match(/^<(\\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\\s+[\\w-]+(?:=(?:\"[^\"]*\"|'[^']*'|[^\\s>]+))?)*\\s*(\\/)?>/);\n if (openingMatch) {\n const tagName = openingMatch[1];\n if (/^\\d+$/.test(tagName) || allValidNames.includes(tagName)) {\n isValidTag = true;\n result += openingMatch[0];\n i += openingMatch[0].length;\n }\n }\n }\n if (!isValidTag) {\n result += '<';\n i += 1;\n }\n } else {\n result += str[i];\n i += 1;\n }\n }\n return result;\n};\nconst renderNodes = (children, knownComponentsMap, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {\n if (targetString === '') return [];\n const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);\n if (!children && !knownComponentsMap && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];\n const data = knownComponentsMap ?? {};\n const getData = childs => {\n const childrenArray = getAsArray(childs);\n childrenArray.forEach(child => {\n if (isString(child)) return;\n if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(data, child);\n });\n };\n getData(children);\n const escapedString = escapeLiteralLessThan(targetString, keepArray, data);\n const ast = HTML.parse(`<0>${escapedString}</0>`);\n const opts = {\n ...data,\n ...combinedTOpts\n };\n const renderInner = (child, node, rootReactNode) => {\n const childs = getChildren(child);\n const mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 || child.props?.i18nIsDynamicList ? childs : mappedChildren;\n };\n const pushTranslatedJSX = (child, inner, mem, i, isVoid) => {\n if (child.dummy) {\n child.children = inner;\n mem.push(cloneElement(child, {\n key: i\n }, isVoid ? undefined : inner));\n } else {\n mem.push(...Children.map([child], c => {\n if (c.type === Fragment || c.props?.i18nIsDynamicList !== undefined) {\n const freshProps = {\n key: i\n };\n if (c && c.props) {\n Object.keys(c.props).forEach(k => {\n if (k === 'children' || k === 'i18nIsDynamicList') return;\n freshProps[k] = c.props[k];\n });\n }\n return createElement(c.type, freshProps, isVoid ? null : inner);\n }\n const override = {\n key: i\n };\n if (c && c.props) {\n Object.keys(c.props).forEach(k => {\n if (k === 'ref' || k === 'children') return;\n override[k] = c.props[k];\n });\n }\n return cloneElement(c, override, isVoid ? null : inner);\n }));\n }\n };\n const mapAST = (reactNode, astNode, rootReactNode) => {\n const reactNodes = getAsArray(reactNode);\n const astNodes = getAsArray(astNode);\n const keepTagOccurrence = {};\n return astNodes.reduce((mem, node, i) => {\n const translationContent = node.children?.[0]?.content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n if (node.type === 'tag') {\n let tmp = reactNodes[parseInt(node.name, 10)];\n if (!tmp && knownComponentsMap) tmp = knownComponentsMap[node.name];\n if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n const props = {\n ...node.attrs\n };\n if (shouldUnescape) {\n Object.keys(props).forEach(p => {\n const val = props[p];\n if (isString(val)) {\n props[p] = unescape(val);\n }\n });\n }\n const child = Object.keys(props).length !== 0 ? mergeProps({\n props\n }, tmp) : tmp;\n const isElement = isValidElement(child);\n const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && isObject(child) && child.dummy && !isElement;\n const isKnownComponent = isObject(knownComponentsMap) && Object.hasOwnProperty.call(knownComponentsMap, node.name);\n if (isString(child)) {\n const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }));\n } else {\n const occurrence = keepTagOccurrence[node.name] || 0;\n keepTagOccurrence[node.name] = occurrence + 1;\n let matched;\n let seen = 0;\n for (let r = 0; r < reactNodes.length; r += 1) {\n const rn = reactNodes[r];\n if (isValidElement(rn) && rn.type === node.name) {\n if (seen === occurrence) {\n matched = rn;\n break;\n }\n seen += 1;\n }\n }\n const innerScope = matched ? getAsArray(getChildren(matched)) : reactNodes;\n const inner = mapAST(innerScope, node.children, rootReactNode);\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }, inner));\n }\n } else if (node.voidElement) {\n mem.push(`<${node.name} />`);\n } else {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n mem.push(`<${node.name}>${inner}</${node.name}>`);\n }\n } else if (isObject(child) && !isElement) {\n const content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else {\n pushTranslatedJSX(child, translationContent, mem, i, node.children.length !== 1 || !translationContent);\n }\n } else if (node.type === 'text') {\n const wrapTextNodes = i18nOptions.transWrapTextNodes;\n const unescapeFn = typeof i18nOptions.unescape === 'function' ? i18nOptions.unescape : getDefaults().unescape;\n const content = shouldUnescape ? unescapeFn(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n if (wrapTextNodes) {\n mem.push(createElement(wrapTextNodes, {\n key: `${node.name}-${i}`\n }, content));\n } else {\n mem.push(content);\n }\n }\n return mem;\n }, []);\n };\n const result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n};\nconst fixComponentProps = (component, index, translation) => {\n const componentKey = component.key || index;\n const comp = cloneElement(component, {\n key: componentKey\n });\n if (!comp.props || !comp.props.children || translation.indexOf(`${index}/>`) < 0 && translation.indexOf(`${index} />`) < 0) {\n return comp;\n }\n function Componentized() {\n return createElement(Fragment, null, comp);\n }\n return createElement(Componentized, {\n key: componentKey\n });\n};\nconst generateArrayComponents = (components, translation) => components.map((c, index) => fixComponentProps(c, index, translation));\nconst generateObjectComponents = (components, translation) => {\n const componentMap = {};\n Object.keys(components).forEach(c => {\n Object.assign(componentMap, {\n [c]: fixComponentProps(components[c], c, translation)\n });\n });\n return componentMap;\n};\nconst generateComponents = (components, translation, i18n, i18nKey) => {\n if (!components) return null;\n if (Array.isArray(components)) {\n return generateArrayComponents(components, translation);\n }\n if (isObject(components)) {\n return generateObjectComponents(components, translation);\n }\n warnOnce(i18n, 'TRANS_INVALID_COMPONENTS', `<Trans /> \"components\" prop expects an object or array`, {\n i18nKey\n });\n return null;\n};\nconst isComponentsMap = object => {\n if (!isObject(object)) return false;\n if (Array.isArray(object)) return false;\n return Object.keys(object).reduce((acc, key) => acc && Number.isNaN(Number.parseFloat(key)), true);\n};\nexport function Trans({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n}) {\n const i18n = i18nFromProps || getI18n();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', `Trans: You need to pass in an i18next instance using i18nextReactModule`, {\n i18nKey\n });\n return children;\n }\n const t = tFromProps || i18n.t.bind(i18n) || (k => k);\n const reactI18nextOptions = {\n ...getDefaults(),\n ...i18n.options?.react\n };\n let namespaces = ns || t.ns || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n const {\n transDefaultProps\n } = reactI18nextOptions;\n const mergedTOptions = transDefaultProps?.tOptions ? {\n ...transDefaultProps.tOptions,\n ...tOptions\n } : tOptions;\n const mergedShouldUnescape = shouldUnescape ?? transDefaultProps?.shouldUnescape;\n const mergedValues = transDefaultProps?.values ? {\n ...transDefaultProps.values,\n ...values\n } : values;\n const mergedComponents = transDefaultProps?.components ? {\n ...transDefaultProps.components,\n ...components\n } : components;\n const nodeAsString = nodesToString(children, reactI18nextOptions, i18n, i18nKey);\n const defaultValue = defaults || mergedTOptions?.defaultValue || nodeAsString || reactI18nextOptions.transEmptyNodeValue || (typeof i18nKey === 'function' ? keyFromSelector(i18nKey) : i18nKey);\n const {\n hashTransKey\n } = reactI18nextOptions;\n const key = i18nKey || (hashTransKey ? hashTransKey(nodeAsString || defaultValue) : nodeAsString || defaultValue);\n if (i18n.options?.interpolation?.defaultVariables) {\n values = mergedValues && Object.keys(mergedValues).length > 0 ? {\n ...mergedValues,\n ...i18n.options.interpolation.defaultVariables\n } : {\n ...i18n.options.interpolation.defaultVariables\n };\n } else {\n values = mergedValues;\n }\n const valuesFromChildren = getValuesFromChildren(children);\n if (valuesFromChildren && typeof valuesFromChildren.count === 'number' && count === undefined) {\n count = valuesFromChildren.count;\n }\n const interpolationOverride = values || count !== undefined && !i18n.options?.interpolation?.alwaysFormat || !children ? mergedTOptions.interpolation : {\n interpolation: {\n ...mergedTOptions.interpolation,\n prefix: '#$?',\n suffix: '?$#'\n }\n };\n const combinedTOpts = {\n ...mergedTOptions,\n context: context || mergedTOptions.context,\n count,\n ...values,\n ...interpolationOverride,\n defaultValue,\n ns: namespaces\n };\n let translation = key ? t(key, combinedTOpts) : defaultValue;\n if (translation === key && defaultValue) translation = defaultValue;\n const generatedComponents = generateComponents(mergedComponents, translation, i18n, i18nKey);\n let indexedChildren = generatedComponents || children;\n let componentsMap = null;\n if (isComponentsMap(generatedComponents)) {\n componentsMap = generatedComponents;\n indexedChildren = children;\n }\n const content = renderNodes(indexedChildren, componentsMap, translation, i18n, reactI18nextOptions, combinedTOpts, mergedShouldUnescape);\n const useAsParent = parent ?? reactI18nextOptions.defaultTransParent;\n return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}", "export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;", "const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '\u00A9',\n '©': '\u00A9',\n '®': '\u00AE',\n '®': '\u00AE',\n '…': '\u2026',\n '…': '\u2026',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);", "import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape,\n transDefaultProps: undefined\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;", "let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;", "import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n if (!i18n) {\n console.warn('react-i18next:: getInitialProps: You will need to pass in an i18next instance by using initReactI18next');\n return {};\n }\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};", "import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};", "import { useContext } from 'react';\nimport { IcuTransWithoutContext } from './IcuTransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport function IcuTrans({\n i18nKey,\n defaultTranslation,\n content,\n ns,\n values = {},\n i18n: i18nFromProps,\n t: tFromProps\n}) {\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n const t = tFromProps || i18n?.t.bind(i18n);\n return IcuTransWithoutContext({\n i18nKey,\n defaultTranslation,\n content,\n ns: ns || t?.ns || defaultNSFromContext || i18n?.options?.defaultNS,\n values,\n i18n,\n t: tFromProps\n });\n}\nIcuTrans.displayName = 'IcuTrans';", "import React from 'react';\nimport { warn, warnOnce, isString } from './utils.js';\nimport { getI18n } from './i18nInstance.js';\nimport { renderTranslation } from './IcuTransUtils/index.js';\nexport function IcuTransWithoutContext({\n i18nKey,\n defaultTranslation,\n content,\n ns,\n values = {},\n i18n: i18nFromProps,\n t: tFromProps\n}) {\n const i18n = i18nFromProps || getI18n();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', `IcuTrans: You need to pass in an i18next instance using i18nextReactModule`, {\n i18nKey\n });\n return React.createElement(React.Fragment, {}, defaultTranslation);\n }\n const t = tFromProps || i18n.t?.bind(i18n) || (k => k);\n let namespaces = ns || t.ns || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n let mergedValues = values;\n if (i18n.options?.interpolation?.defaultVariables) {\n mergedValues = values && Object.keys(values).length > 0 ? {\n ...values,\n ...i18n.options.interpolation.defaultVariables\n } : {\n ...i18n.options.interpolation.defaultVariables\n };\n }\n const translation = t(i18nKey, {\n defaultValue: defaultTranslation,\n ...mergedValues,\n ns: namespaces\n });\n try {\n const rendered = renderTranslation(translation, content);\n return React.createElement(React.Fragment, {}, ...rendered);\n } catch (error) {\n warn(i18n, 'ICU_TRANS_RENDER_ERROR', `IcuTrans component error for key \"${i18nKey}\": ${error.message}`, {\n i18nKey,\n error\n });\n return React.createElement(React.Fragment, {}, translation);\n }\n}\nIcuTransWithoutContext.displayName = 'IcuTransWithoutContext';", "export class TranslationParserError extends Error {\n constructor(message, position, translationString) {\n super(message);\n this.name = 'TranslationParserError';\n this.position = position;\n this.translationString = translationString;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TranslationParserError);\n }\n }\n}", "const commonEntities = {\n ' ': '\\u00A0',\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '©': '\u00A9',\n '®': '\u00AE',\n '™': '\u2122',\n '…': '\u2026',\n '–': '\u2013',\n '—': '\u2014',\n '‘': '\\u2018',\n '’': '\\u2019',\n '‚': '\\u201A',\n '“': '\\u201C',\n '”': '\\u201D',\n '„': '\\u201E',\n '†': '\u2020',\n '‡': '\u2021',\n '•': '\u2022',\n '′': '\u2032',\n '″': '\u2033',\n '‹': '\u2039',\n '›': '\u203A',\n '§': '\u00A7',\n '¶': '\u00B6',\n '·': '\u00B7',\n ' ': '\\u2002',\n ' ': '\\u2003',\n ' ': '\\u2009',\n '€': '\u20AC',\n '£': '\u00A3',\n '¥': '\u00A5',\n '¢': '\u00A2',\n '¤': '\u00A4',\n '×': '\u00D7',\n '÷': '\u00F7',\n '−': '\u2212',\n '±': '\u00B1',\n '≠': '\u2260',\n '≤': '\u2264',\n '≥': '\u2265',\n '≈': '\u2248',\n '≡': '\u2261',\n '∞': '\u221E',\n '∫': '\u222B',\n '∑': '\u2211',\n '∏': '\u220F',\n '√': '\u221A',\n '∂': '\u2202',\n '‰': '\u2030',\n '°': '\u00B0',\n 'µ': '\u00B5',\n '←': '\u2190',\n '↑': '\u2191',\n '→': '\u2192',\n '↓': '\u2193',\n '↔': '\u2194',\n '↵': '\u21B5',\n '⇐': '\u21D0',\n '⇑': '\u21D1',\n '⇒': '\u21D2',\n '⇓': '\u21D3',\n '⇔': '\u21D4',\n 'α': '\u03B1',\n 'β': '\u03B2',\n 'γ': '\u03B3',\n 'δ': '\u03B4',\n 'ε': '\u03B5',\n 'ζ': '\u03B6',\n 'η': '\u03B7',\n 'θ': '\u03B8',\n 'ι': '\u03B9',\n 'κ': '\u03BA',\n 'λ': '\u03BB',\n 'μ': '\u03BC',\n 'ν': '\u03BD',\n 'ξ': '\u03BE',\n 'ο': '\u03BF',\n 'π': '\u03C0',\n 'ρ': '\u03C1',\n 'σ': '\u03C3',\n 'τ': '\u03C4',\n 'υ': '\u03C5',\n 'φ': '\u03C6',\n 'χ': '\u03C7',\n 'ψ': '\u03C8',\n 'ω': '\u03C9',\n 'Α': '\u0391',\n 'Β': '\u0392',\n 'Γ': '\u0393',\n 'Δ': '\u0394',\n 'Ε': '\u0395',\n 'Ζ': '\u0396',\n 'Η': '\u0397',\n 'Θ': '\u0398',\n 'Ι': '\u0399',\n 'Κ': '\u039A',\n 'Λ': '\u039B',\n 'Μ': '\u039C',\n 'Ν': '\u039D',\n 'Ξ': '\u039E',\n 'Ο': '\u039F',\n 'Π': '\u03A0',\n 'Ρ': '\u03A1',\n 'Σ': '\u03A3',\n 'Τ': '\u03A4',\n 'Υ': '\u03A5',\n 'Φ': '\u03A6',\n 'Χ': '\u03A7',\n 'Ψ': '\u03A8',\n 'Ω': '\u03A9',\n 'À': '\u00C0',\n 'Á': '\u00C1',\n 'Â': '\u00C2',\n 'Ã': '\u00C3',\n 'Ä': '\u00C4',\n 'Å': '\u00C5',\n 'Æ': '\u00C6',\n 'Ç': '\u00C7',\n 'È': '\u00C8',\n 'É': '\u00C9',\n 'Ê': '\u00CA',\n 'Ë': '\u00CB',\n 'Ì': '\u00CC',\n 'Í': '\u00CD',\n 'Î': '\u00CE',\n 'Ï': '\u00CF',\n 'Ð': '\u00D0',\n 'Ñ': '\u00D1',\n 'Ò': '\u00D2',\n 'Ó': '\u00D3',\n 'Ô': '\u00D4',\n 'Õ': '\u00D5',\n 'Ö': '\u00D6',\n 'Ø': '\u00D8',\n 'Ù': '\u00D9',\n 'Ú': '\u00DA',\n 'Û': '\u00DB',\n 'Ü': '\u00DC',\n 'Ý': '\u00DD',\n 'Þ': '\u00DE',\n 'ß': '\u00DF',\n 'à': '\u00E0',\n 'á': '\u00E1',\n 'â': '\u00E2',\n 'ã': '\u00E3',\n 'ä': '\u00E4',\n 'å': '\u00E5',\n 'æ': '\u00E6',\n 'ç': '\u00E7',\n 'è': '\u00E8',\n 'é': '\u00E9',\n 'ê': '\u00EA',\n 'ë': '\u00EB',\n 'ì': '\u00EC',\n 'í': '\u00ED',\n 'î': '\u00EE',\n 'ï': '\u00EF',\n 'ð': '\u00F0',\n 'ñ': '\u00F1',\n 'ò': '\u00F2',\n 'ó': '\u00F3',\n 'ô': '\u00F4',\n 'õ': '\u00F5',\n 'ö': '\u00F6',\n 'ø': '\u00F8',\n 'ù': '\u00F9',\n 'ú': '\u00FA',\n 'û': '\u00FB',\n 'ü': '\u00FC',\n 'ý': '\u00FD',\n 'þ': '\u00FE',\n 'ÿ': '\u00FF',\n '¡': '\u00A1',\n '¿': '\u00BF',\n 'ƒ': '\u0192',\n 'ˆ': '\u02C6',\n '˜': '\u02DC',\n 'Œ': '\u0152',\n 'œ': '\u0153',\n 'Š': '\u0160',\n 'š': '\u0161',\n 'Ÿ': '\u0178',\n 'ª': '\u00AA',\n 'º': '\u00BA',\n '¯': '\u00AF',\n '´': '\u00B4',\n '¸': '\u00B8',\n '¹': '\u00B9',\n '²': '\u00B2',\n '³': '\u00B3',\n '¼': '\u00BC',\n '½': '\u00BD',\n '¾': '\u00BE',\n '♠': '\u2660',\n '♣': '\u2663',\n '♥': '\u2665',\n '♦': '\u2666',\n '◊': '\u25CA',\n '‾': '\u203E',\n '⁄': '\u2044',\n '℘': '\u2118',\n 'ℑ': '\u2111',\n 'ℜ': '\u211C',\n 'ℵ': '\u2135'\n};\nconst entityPattern = new RegExp(Object.keys(commonEntities).map(entity => entity.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('|'), 'g');\nexport const decodeHtmlEntities = text => text.replace(entityPattern, match => commonEntities[match]).replace(/&#(\\d+);/g, (_, num) => String.fromCharCode(parseInt(num, 10))).replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));", "export const tokenize = translation => {\n const tokens = [];\n let position = 0;\n let currentText = '';\n const flushText = () => {\n if (currentText) {\n tokens.push({\n type: 'Text',\n value: currentText,\n position: position - currentText.length\n });\n currentText = '';\n }\n };\n while (position < translation.length) {\n const char = translation[position];\n if (char === '<') {\n const tagMatch = translation.slice(position).match(/^<(\\d+)>/);\n if (tagMatch) {\n flushText();\n tokens.push({\n type: 'TagOpen',\n value: tagMatch[0],\n position,\n tagNumber: parseInt(tagMatch[1], 10)\n });\n position += tagMatch[0].length;\n } else {\n const closeTagMatch = translation.slice(position).match(/^<\\/(\\d+)>/);\n if (closeTagMatch) {\n flushText();\n tokens.push({\n type: 'TagClose',\n value: closeTagMatch[0],\n position,\n tagNumber: parseInt(closeTagMatch[1], 10)\n });\n position += closeTagMatch[0].length;\n } else {\n currentText += char;\n position += 1;\n }\n }\n } else {\n currentText += char;\n position += 1;\n }\n }\n flushText();\n return tokens;\n};", "import React from 'react';\nimport { TranslationParserError } from './TranslationParserError.js';\nimport { tokenize } from './tokenizer.js';\nimport { decodeHtmlEntities } from './htmlEntityDecoder.js';\nconst renderDeclarationNode = (declaration, children, childDeclarations) => {\n const {\n type,\n props = {}\n } = declaration;\n if (props.children && Array.isArray(props.children) && childDeclarations) {\n const {\n children: _childrenToRemove,\n ...propsWithoutChildren\n } = props;\n return React.createElement(type, propsWithoutChildren, ...children);\n }\n if (children.length === 0) {\n return React.createElement(type, props);\n }\n if (children.length === 1) {\n return React.createElement(type, props, children[0]);\n }\n return React.createElement(type, props, ...children);\n};\nexport const renderTranslation = (translation, declarations = []) => {\n if (!translation) {\n return [];\n }\n const tokens = tokenize(translation);\n const result = [];\n const stack = [];\n const literalTagNumbers = new Set();\n const getCurrentDeclarations = () => {\n if (stack.length === 0) {\n return declarations;\n }\n const parentFrame = stack[stack.length - 1];\n if (parentFrame.declaration.props?.children && Array.isArray(parentFrame.declaration.props.children)) {\n return parentFrame.declaration.props.children;\n }\n return parentFrame.declarations;\n };\n tokens.forEach(token => {\n switch (token.type) {\n case 'Text':\n {\n const decoded = decodeHtmlEntities(token.value);\n const targetArray = stack.length > 0 ? stack[stack.length - 1].children : result;\n targetArray.push(decoded);\n }\n break;\n case 'TagOpen':\n {\n const {\n tagNumber\n } = token;\n const currentDeclarations = getCurrentDeclarations();\n const declaration = currentDeclarations[tagNumber];\n if (!declaration) {\n literalTagNumbers.add(tagNumber);\n const literalText = `<${tagNumber}>`;\n const targetArray = stack.length > 0 ? stack[stack.length - 1].children : result;\n targetArray.push(literalText);\n break;\n }\n stack.push({\n tagNumber,\n children: [],\n position: token.position,\n declaration,\n declarations: currentDeclarations\n });\n }\n break;\n case 'TagClose':\n {\n const {\n tagNumber\n } = token;\n if (literalTagNumbers.has(tagNumber)) {\n const literalText = `</${tagNumber}>`;\n const literalTargetArray = stack.length > 0 ? stack[stack.length - 1].children : result;\n literalTargetArray.push(literalText);\n literalTagNumbers.delete(tagNumber);\n break;\n }\n if (stack.length === 0) {\n throw new TranslationParserError(`Unexpected closing tag </${tagNumber}> at position ${token.position}`, token.position, translation);\n }\n const frame = stack.pop();\n if (frame.tagNumber !== tagNumber) {\n throw new TranslationParserError(`Mismatched tags: expected </${frame.tagNumber}> but got </${tagNumber}> at position ${token.position}`, token.position, translation);\n }\n const element = renderDeclarationNode(frame.declaration, frame.children, frame.declarations);\n const elementTargetArray = stack.length > 0 ? stack[stack.length - 1].children : result;\n elementTargetArray.push(element);\n }\n break;\n }\n });\n if (stack.length > 0) {\n const unclosed = stack[stack.length - 1];\n throw new TranslationParserError(`Unclosed tag <${unclosed.tagNumber}> at position ${unclosed.position}`, unclosed.position, translation);\n }\n return result;\n};", "import { useContext, useCallback, useMemo, useEffect, useRef, useState } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n if (typeof k === 'function') return '';\n if (Array.isArray(k)) {\n const last = k[k.length - 1];\n return typeof last === 'function' ? '' : last;\n }\n return k;\n};\nconst notReadySnapshot = {\n t: notReadyT,\n ready: false\n};\nconst dummySubscribe = () => () => {};\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n }\n const i18nOptions = useMemo(() => ({\n ...getDefaults(),\n ...i18n?.options?.react,\n ...props\n }), [i18n, props]);\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n const nsOrContext = ns || defaultNSFromContext || i18n?.options?.defaultNS;\n const unstableNamespaces = isString(nsOrContext) ? [nsOrContext] : nsOrContext || ['translation'];\n const namespaces = useMemo(() => unstableNamespaces, unstableNamespaces);\n i18n?.reportNamespaces?.addUsedNamespaces?.(namespaces);\n const revisionRef = useRef(0);\n const subscribe = useCallback(callback => {\n if (!i18n) return dummySubscribe;\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n const wrappedCallback = () => {\n revisionRef.current += 1;\n callback();\n };\n if (bindI18n) i18n.on(bindI18n, wrappedCallback);\n if (bindI18nStore) i18n.store.on(bindI18nStore, wrappedCallback);\n return () => {\n if (bindI18n) bindI18n.split(' ').forEach(e => i18n.off(e, wrappedCallback));\n if (bindI18nStore) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, wrappedCallback));\n };\n }, [i18n, i18nOptions]);\n const snapshotRef = useRef();\n const getSnapshot = useCallback(() => {\n if (!i18n) {\n return notReadySnapshot;\n }\n const calculatedReady = !!(i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const currentLng = props.lng || i18n.language;\n const currentRevision = revisionRef.current;\n const lastSnapshot = snapshotRef.current;\n if (lastSnapshot && lastSnapshot.ready === calculatedReady && lastSnapshot.lng === currentLng && lastSnapshot.keyPrefix === keyPrefix && lastSnapshot.revision === currentRevision) {\n return lastSnapshot;\n }\n const calculatedT = i18n.getFixedT(currentLng, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix, {\n scopeNs: namespaces\n });\n const newSnapshot = {\n t: calculatedT,\n ready: calculatedReady,\n lng: currentLng,\n keyPrefix,\n revision: currentRevision\n };\n snapshotRef.current = newSnapshot;\n return newSnapshot;\n }, [i18n, namespaces, keyPrefix, i18nOptions, props.lng]);\n const [loadCount, setLoadCount] = useState(0);\n const {\n t,\n ready\n } = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n useEffect(() => {\n if (i18n && !ready && !useSuspense) {\n const onLoaded = () => setLoadCount(c => c + 1);\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n }\n }, [i18n, props.lng, namespaces, ready, useSuspense, loadCount]);\n const finalI18n = i18n || {};\n const wrapperRef = useRef(null);\n const wrapperLangRef = useRef();\n const createI18nWrapper = original => {\n const descriptors = Object.getOwnPropertyDescriptors(original);\n if (descriptors.__original) delete descriptors.__original;\n const wrapper = Object.create(Object.getPrototypeOf(original), descriptors);\n if (!Object.prototype.hasOwnProperty.call(wrapper, '__original')) {\n try {\n Object.defineProperty(wrapper, '__original', {\n value: original,\n writable: false,\n enumerable: false,\n configurable: false\n });\n } catch (_) {}\n }\n return wrapper;\n };\n const ret = useMemo(() => {\n const original = finalI18n;\n const lang = original?.language;\n let i18nWrapper = original;\n if (original) {\n if (wrapperRef.current && wrapperRef.current.__original === original) {\n if (wrapperLangRef.current !== lang) {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n } else {\n i18nWrapper = wrapperRef.current;\n }\n } else {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n }\n }\n const effectiveT = !ready && !useSuspense ? (...args) => {\n warnOnce(i18n, 'USE_T_BEFORE_READY', 'useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.');\n return t(...args);\n } : t;\n const arr = [effectiveT, i18nWrapper, ready];\n arr.t = effectiveT;\n arr.i18n = i18nWrapper;\n arr.ready = ready;\n return arr;\n }, [t, finalI18n, ready, finalI18n.resolvedLanguage, finalI18n.language, finalI18n.languages]);\n if (i18n && useSuspense && !ready) {\n throw new Promise(resolve => {\n const onLoaded = () => resolve();\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n });\n }\n return ret;\n};", "import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport const withTranslation = (ns, options = {}) => function Extend(WrappedComponent) {\n function I18nextWithTranslation({\n forwardedRef,\n ...rest\n }) {\n const [t, i18n, ready] = useTranslation(ns, {\n ...rest,\n keyPrefix: options.keyPrefix\n });\n const passDownProps = {\n ...rest,\n t,\n i18n,\n tReady: ready\n };\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n return createElement(WrappedComponent, passDownProps);\n }\n I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n};", "import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context.js';\nexport function I18nextProvider({\n i18n,\n defaultNS,\n children\n}) {\n const value = useMemo(() => ({\n i18n,\n defaultNS\n }), [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value\n }, children);\n}", "import { createElement } from 'react';\nimport { useSSR } from './useSSR.js';\nimport { composeInitialProps } from './context.js';\nimport { getDisplayName } from './utils.js';\nexport const withSSR = () => function Extend(WrappedComponent) {\n function I18nextWithSSR({\n initialI18nStore,\n initialLanguage,\n ...rest\n }) {\n useSSR(initialI18nStore, initialLanguage);\n return createElement(WrappedComponent, {\n ...rest\n });\n }\n I18nextWithSSR.getInitialProps = composeInitialProps(WrappedComponent);\n I18nextWithSSR.displayName = `withI18nextSSR(${getDisplayName(WrappedComponent)})`;\n I18nextWithSSR.WrappedComponent = WrappedComponent;\n return I18nextWithSSR;\n};", "import { useContext } from 'react';\nimport { getI18n, I18nContext } from './context.js';\nimport { warnOnce } from './utils.js';\nexport const useSSR = (initialI18nStore, initialLanguage, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useSSR: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.');\n return;\n }\n if (i18n.options?.isClone) return;\n if (initialI18nStore && !i18n.initializedStoreOnce) {\n if (!i18n.services?.resourceStore) {\n warnOnce(i18n, 'I18N_NOT_INITIALIZED', 'useSSR: i18n instance was found but not initialized (services.resourceStore is missing). Make sure you call i18next.init() before using useSSR \u2014 e.g. at module level, not only in getStaticProps/getServerSideProps.');\n return;\n }\n i18n.services.resourceStore.data = initialI18nStore;\n i18n.options.ns = Object.values(initialI18nStore).reduce((mem, lngResources) => {\n Object.keys(lngResources).forEach(ns => {\n if (mem.indexOf(ns) < 0) mem.push(ns);\n });\n return mem;\n }, i18n.options.ns);\n i18n.initializedStoreOnce = true;\n i18n.isInitialized = true;\n }\n if (initialLanguage && !i18n.initializedLanguageOnce) {\n i18n.changeLanguage(initialLanguage);\n i18n.initializedLanguageOnce = true;\n }\n};", "{\n \"auth\": {\n \"invalidUsernamePass\": \"Invalid username/password combination\",\n \"tooManyAttempts\": \"Too many login attempts. Please try again later.\",\n \"incorrectOldPassword\": \"Incorrect Old Password\",\n \"passwordTooShort\": \"Password must be at least 6 characters long\",\n \"passUpdated\": \"Password updated\",\n \"missingRequiredFields\": \"Missing Required Fields\"\n },\n \"error\": {\n \"notFound\": \"Not Found\",\n \"internalError\": \"Internal Server Error\",\n \"invalidArgs\": \"Invalid Arguments\",\n \"badMethod\": \"Bad Method\",\n \"notAuthenticated\": \"Not Authenticated\",\n \"permissionDenied\": \"Permission Denied\",\n \"error\": \"error: {{status}}\",\n \"errorWithMsg\": \"error {{status}}: {{msg}}\",\n \"requestTimedOut\": \"request timed out\",\n \"networkError\": \"network error\",\n \"upsertUnauthorized\": \"not authorized\",\n \"upsertNotFound\": \"not found\",\n \"upsertHrefUsedByOther\": \"href already used by another bookmark\",\n \"upsertConflictWithNewer\": \"item on server has been updated more recently; reload and retry\",\n \"upsertInvalidInput\": \"invalid input\"\n },\n \"nav\": {\n \"privateProfileEnabled\": \"private profile enabled\",\n \"darkMode\": \"dark mode\",\n \"lightMode\": \"light mode\",\n \"addUrl\": \"add url\",\n \"addNote\": \"add note\",\n \"notes\": \"notes\",\n \"settings\": \"settings\",\n \"logout\": \"log out\",\n \"login\": \"log in\"\n },\n \"footer\": {\n \"sourceCode\": \"Source Code\"\n },\n \"login\": {\n \"pageTitle\": \"Log In\",\n \"username\": \"Username\",\n \"password\": \"Password\",\n \"submit\": \"Log In\"\n },\n \"changePassword\": {\n \"oldPassword\": \"Old Password\",\n \"newPassword\": \"New Password\",\n \"submit\": \"Save Changes\",\n \"demoMode\": \"demo mode: password changes are disabled\"\n },\n \"settings\": {\n \"serverDefault\": \"Server Default\",\n \"bookmarklet\": \"add url bookmarklet\",\n \"changePassword\": \"Change Password\",\n \"groupLanguage\": \"Language\",\n \"groupArchive\": \"Archiving\",\n \"groupGeneral\": \"General\",\n \"groupPrivacy\": \"Privacy & Sharing\",\n \"archiveDefault\": \"Archive new non-Private bookmarks by default\",\n \"privateDefault\": \"Default new bookmarks to Private\",\n \"suggestTags\": \"Enable tag suggestions\",\n \"suggestTagsUseReturnKey\": \"Use return key to apply tag suggestions\",\n \"privacyLock\": \"Privacy Lock (Private Account)\",\n \"publicTagCloud\": \"Public Tag Cloud (visible to visitors)\",\n \"previewNotes\": \"Show note previews in the note list\",\n \"archivingDisabled\": \"Archiving Disabled\",\n \"language\": \"Language\",\n \"tabAccount\": \"Account Settings\",\n \"tabImportExport\": \"Import / Export\",\n \"export\": \"Export\",\n \"import\": \"Import\",\n \"exportBookmarksJson\": \"Bookmarks (JSON)\",\n \"exportBookmarksHtml\": \"Bookmarks (Netscape HTML)\",\n \"exportNotesJson\": \"Notes (JSON)\",\n \"importBookmarksJson\": \"Bookmarks (Espial/Pinboard JSON)\",\n \"importFirefoxJson\": \"Bookmarks (Firefox JSON)\",\n \"importNetscapeHtml\": \"Bookmarks (Netscape HTML)\",\n \"importNotesJson\": \"Notes (JSON)\",\n \"importing\": \"importing\u2026\",\n \"imported_one\": \"{{count}} item imported\",\n \"imported_other\": \"{{count}} items imported\",\n \"importParseError\": \"could not read file\",\n \"tabApi\": \"Api\",\n \"apiKeyTitle\": \"API Key\",\n \"apiKeyHasKey\": \"An API key is currently set.\",\n \"apiKeyNoKey\": \"No API key is set.\",\n \"apiKeyCreate\": \"Create API Key\",\n \"apiKeyReset\": \"Reset API Key\",\n \"apiKeyRevoke\": \"Revoke\",\n \"apiKeyShownOnce\": \"This key is shown only once. Copy it now \u2014 you won't be able to see it again.\",\n \"apiKeyResetHint\": \"Resetting or revoking invalidates your current key.\",\n \"apiKeyCopy\": \"copy\",\n \"apiKeyCopied\": \"copied\"\n },\n \"rss\": \"RSS\",\n \"filter\": {\n \"all\": \"all\",\n \"private\": \"private\",\n \"public\": \"public\",\n \"unread\": \"unread\",\n \"untagged\": \"untagged\",\n \"starred\": \"starred\"\n },\n \"pagination\": {\n \"perPage\": \"per page:\"\n },\n \"sort\": {\n \"label\": \"sort:\",\n \"time\": \"time\",\n \"url\": \"url\",\n \"title\": \"title\",\n \"tagcount\": \"tagcount\",\n \"created\": \"created\"\n },\n \"pager\": {\n \"earlier\": \"\u00AB earlier\",\n \"later\": \"later \u00BB\",\n \"previous\": \"\u00AB previous\",\n \"next\": \"next \u00BB\"\n },\n \"notes\": {\n \"count_one\": \"{{count}} note\",\n \"count_other\": \"{{count}} notes\"\n },\n \"search\": {\n \"placeholder\": \"search\",\n \"clearTitle\": \"clear search results\",\n \"submitTitle\": \"submit search\",\n \"syntaxTitle\": \"search syntax\"\n },\n \"noTitle\": \"[no title]\",\n \"edit\": \"edit\",\n \"delete\": \"delete\",\n \"cancel\": \"cancel\",\n \"destroy\": \"destroy\",\n \"save\": \"save\",\n \"fetch\": \"fetch\",\n \"archive\": \"archive\",\n \"archiving\": \"archiving\",\n \"bmark\": {\n \"archiveLinkTitle\": \"archive link\",\n \"markAsRead\": \"mark as read\",\n \"viewInContext\": \"view in context\",\n \"url\": \"url\",\n \"title\": \"title\",\n \"description\": \"description\",\n \"tags\": \"tags\",\n \"private\": \"private\",\n \"toread\": \"to-read\"\n },\n \"note\": {\n \"killed\": \"you killed this note\",\n \"titleLabel\": \"title:\",\n \"descriptionLabel\": \"description:\",\n \"useMarkdown\": \"use markdown?\",\n \"publicLabel\": \"public?\"\n },\n \"addForm\": {\n \"previouslySaved\": \"previously saved\",\n \"url\": \"URL\",\n \"archive\": \"archive\",\n \"archiveUnavailable\": \"archiving is unavailable for private bookmarks\",\n \"readLater\": \"read later\",\n \"update\": \"update bookmark\",\n \"add\": \"add bookmark\",\n \"killed\": \"you killed this bookmark\"\n },\n \"tagCloud\": {\n \"relatedTags\": \"Related Tags\",\n \"topTags\": \"Top Tags\",\n \"topTagsTitle\": \"show a cloud of your most-used tags\",\n \"allTitle\": \"show all tags\",\n \"min2Title\": \"show tags with at least 2 bookmarks\",\n \"min5Title\": \"show tags with at least 5 bookmarks\",\n \"min10Title\": \"show tags with at least 10 bookmarks\",\n \"min20Title\": \"show tags with at least 20 bookmarks\",\n \"hide\": \"hide\",\n \"show\": \"show\"\n },\n \"bulkEdit\": {\n \"edit\": \"edit\",\n \"select\": \"select:\",\n \"oneBookmarkSelected\": \"1 bookmark selected\",\n \"bookmarksSelected\": \"{{count}} bookmarks selected\",\n \"thisPage\": \"this page\",\n \"allPages\": \"all pages\",\n \"action\": \"action:\",\n \"markAsRead\": \"mark as read\",\n \"unread\": \"unread\",\n \"addStars\": \"add stars\",\n \"removeStars\": \"remove stars\",\n \"makePrivate\": \"make private\",\n \"makePublic\": \"make public\",\n \"removeTags\": \"remove tags:\",\n \"addTags\": \"add tags:\",\n \"submitting\": \"submitting\u2026\",\n \"submit\": \"submit\",\n \"destroyOne\": \"destroy 1 bookmark?\",\n \"destroyMany\": \"destroy {{count}} bookmarks?\",\n \"publicOne\": \"make 1 bookmark public?\",\n \"publicMany\": \"make {{count}} bookmarks public?\",\n \"pleaseAddSelection\": \"please add a bookmark selection\",\n \"pleaseChooseAction\": \"please choose an action or enter tags\",\n \"tooManyTags\": \"cannot add more than 10 tags at the same time when over 20,000 bookmarks would be affected\",\n \"pageMismatch\": \"page bookmark count mismatch\",\n \"editedCount_one\": \"edited {{editedCount}} bookmark\",\n \"editedCount_other\": \"edited {{editedCount}} bookmarks\",\n \"editedCountMismatch_one\": \"selection count was {{selectionCount}}, but edited {{editedCount}} bookmark, due to matching bookmark data having changed\",\n \"editedCountMismatch_other\": \"selection count was {{selectionCount}}, but edited {{editedCount}} bookmarks, due to matching bookmark data having changed\"\n },\n \"bulkEditNotes\": {\n \"oneNoteSelected\": \"1 note selected\",\n \"notesSelected\": \"{{count}} notes selected\",\n \"destroyOne\": \"destroy 1 note?\",\n \"destroyMany\": \"destroy {{count}} notes?\",\n \"publicOne\": \"make 1 note public?\",\n \"publicMany\": \"make {{count}} notes public?\",\n \"useMarkdown\": \"use markdown\",\n \"usePlaintext\": \"use plaintext\",\n \"pleaseAddSelection\": \"please add a note selection\",\n \"pleaseChooseAction\": \"please choose an action\",\n \"pageMismatch\": \"page note count mismatch\",\n \"editedCount_one\": \"edited {{editedCount}} note\",\n \"editedCount_other\": \"edited {{editedCount}} notes\",\n \"editedCountMismatch_one\": \"selection count was {{selectionCount}}, but edited {{editedCount}} note, due to matching note data having changed\",\n \"editedCountMismatch_other\": \"selection count was {{selectionCount}}, but edited {{editedCount}} notes, due to matching note data having changed\"\n },\n \"docs\": {\n \"title\": \"Understanding the Search Syntax\",\n \"pageFilters\": \"Page filters\",\n \"pageFiltersDesc\": \"Searches are scoped to the currently selected page filter.\",\n \"soGiven\": \"So, given the possible page filters\",\n \"if\": \"If\",\n \"isCurrentlySelectedIncludes\": \"is currently selected, the search includes\",\n \"bookmarks\": \"bookmarks\",\n \"isCurrentlySelectedOnly\": \"is currently selected, the search only includes\",\n \"bookmarksEtc\": \"bookmarks, etc..\",\n \"combineAnd\": \"Combine Searches (AND)\",\n \"separateBySpace\": \"Separate terms by a space.\",\n \"forExample\": \"For example,\",\n \"combineOr\": \"Combine Searches (OR)\",\n \"put\": \"Put\",\n \"betweenQuery\": \"between each search query.\",\n \"excludeWords\": \"Exclude words from your search\",\n \"inFrontWord\": \"in front of a word you want to leave out.\",\n \"groupTerms\": \"Group search terms\",\n \"putInParens\": \"Put parentheses around terms to group them into a single unit. Groups can be combined, negated, and nested.\",\n \"searchPhrase\": \"Search for a phrase\",\n \"putInQuotes\": \"Put phrase inside quotes.\",\n \"specificField\": \"Search on a specific field\",\n \"inFrontTerm\": \"in front of the term,\",\n \"where\": \"where\",\n \"isOneOfOptions\": \"is one of the options below\",\n \"fieldContainsDesc\": \"A field search performs a contains search: the field only needs to contain the term.\",\n \"exactField\": \"Exact search on a specific field\",\n \"exactFieldDesc\": \"in front of the term to require the entire field to equal the term exactly. Available for text fields: url, title, description, tags.\",\n \"bookmarkSearch\": \"Bookmark Search\",\n \"noteSearch\": \"Note Search\",\n \"fieldHeader\": \"FIELD\",\n \"exampleHeader\": \"EXAMPLE\",\n \"complexExamples\": \"More Complex Examples\",\n \"complexExample1Desc\": \"\\\"youtube\\\" in url, and title of \\\"haskell\\\" or title of \\\"python\\\" and after 12/31/2017\",\n \"complexExample2Desc\": \"\\\"hacker news\\\" not in title, and \\\"news\\\", \\\"cnn\\\", \\\"npr\\\" anywhere, or \\\"the guardian\\\" in the description\",\n \"complexExample3Desc\": \"tagged both \\\"haskell\\\" and \\\"youtube\\\", or not tagged both \\\"haskell\\\" and \\\"vimeo\\\"; and not tagged both \\\"surveys\\\" and \\\"news\\\", and after 2018-12-31\"\n }\n}\n", "import type { Bookmark, Filter, Note, SharedP } from './types';\r\n\r\n/** Server-rendered page data. */\r\nexport type AppData = {\r\n /** The list of bookmarks for the current page. */\r\n bmarks: Bookmark[];\r\n /** A single bookmark, used when viewing or editing one entry. */\r\n bmark: Bookmark;\r\n /** The list of notes for the current page. */\r\n notes?: Note[];\r\n /** Whether the current user owns the displayed profile. */\r\n isowner: boolean;\r\n /** Whether tag suggestions are enabled. */\r\n suggestTags?: boolean;\r\n /** Whether the Return key applies a tag suggestion (Tab always does). */\r\n suggestTagsUseReturnKey?: boolean;\r\n /** Whether note listings show a text preview, or just the title. */\r\n previewNotes?: boolean;\r\n /** Whether the archive backend is enabled. */\r\n archiveBackendEnabled?: boolean;\r\n /** The current filter applied to the bookmarks. */\r\n filter?: Filter;\r\n /** The current shared/private filter. */\r\n sharedp?: SharedP;\r\n /** The path tags currently filtering bookmarks. */\r\n tags?: string[];\r\n /** The current search query string, or null if none. */\r\n query?: string | null;\r\n};\r\n\r\n/** Server-rendered global data. */\r\nexport type App = {\r\n /** The HTTP header name used to send the CSRF token. */\r\n csrfHeaderName: string;\r\n /** The cookie name that holds the CSRF token. */\r\n csrfCookieName: string;\r\n /** The form parameter name used to submit the CSRF token. */\r\n csrfParamName: string;\r\n /** The current CSRF token value. */\r\n csrfToken: string;\r\n /** URL for the home route. */\r\n homeR: string;\r\n /** URL for the logout route. */\r\n authRlogoutR: string;\r\n /** URL for the current user's profile, or null if not logged in. */\r\n userR: string | null;\r\n /** Endpoint URL for fetching tag cloud data. */\r\n tagCloudR?: string;\r\n /** URL for the current note, or null if not viewing a note. */\r\n noteR: string | null;\r\n /** URL for the i18n backend */\r\n i18nR: string;\r\n /** The current language code (e.g. 'en', 'fr'). */\r\n lang: string;\r\n /** Server-rendered page data. */\r\n dat: AppData;\r\n};\r\n\r\ndeclare global {\r\n // Provided by the server in a <script> tag.\r\n\r\n var app: App;\r\n}\r\n\r\nexport function app(): App {\r\n return globalThis.app;\r\n}\r\n\r\nexport function fromNow(locale = navigator.language, date: Date | number | string): string {\r\n const target = date instanceof Date ? date.getTime() : new Date(date).getTime();\r\n\r\n const diff = target - Date.now();\r\n const abs = Math.abs(diff);\r\n\r\n const units: readonly [Intl.RelativeTimeFormatUnit, number][] = [\r\n ['year', 365 * 24 * 60 * 60 * 1000],\r\n ['month', 30 * 24 * 60 * 60 * 1000],\r\n ['day', 24 * 60 * 60 * 1000],\r\n ['hour', 60 * 60 * 1000],\r\n ['minute', 60 * 1000],\r\n ['second', 1000],\r\n ];\r\n\r\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });\r\n\r\n for (const [unit, ms] of units) {\r\n if (abs >= ms || unit === 'second') {\r\n return rtf.format(Math.round(diff / ms), unit);\r\n }\r\n }\r\n\r\n // Unreachable, but satisfies TypeScript.\r\n return '';\r\n}\r\n\r\nexport function shdatetime(lang: string, dateString: string): string {\r\n return new Date(dateString).toLocaleString(lang, {\r\n dateStyle: 'full',\r\n timeStyle: 'long',\r\n });\r\n}\r\n\r\nexport function toLocaleDateString(lang: string, dateString: string): string {\r\n return new Date(dateString).toLocaleDateString(lang, {\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n });\r\n}\r\n\r\nexport function closeWindow(win: Window): void {\r\n win.close();\r\n}\r\n\r\nexport type RawHTML = string;\r\n\r\nexport function setFocus(elemId: string): void {\r\n document.getElementById(elemId)?.focus();\r\n}\r\n", "import type { TFunction } from 'i18next';\r\n\r\nexport type QueryStringArray = Array<[string, string | null]>;\r\n\r\nfunction unsafeDecode(str: string): string {\r\n return decodeURIComponent(str);\r\n}\r\n\r\nexport function parseQueryString(searchOrHash: string): QueryStringArray {\r\n const first = searchOrHash.slice(0, 1);\r\n const qs = first === '#' || first === '?' ? searchOrHash.slice(1) : searchOrHash;\r\n const parts = qs.split('&').filter((x) => x !== '');\r\n\r\n const decode = (s: string) => unsafeDecode(s.replace(/\\+/g, ' '));\r\n\r\n const out: QueryStringArray = [];\r\n for (const kv of parts) {\r\n const [k, ...rest] = kv.split('=');\r\n if (!k) continue;\r\n if (rest.length === 0) out.push([decode(k), null]);\r\n else if (rest.length === 1) out.push([decode(k), decode(rest[0] ?? '')]);\r\n }\r\n return out;\r\n}\r\n\r\nexport function curQuerystring(): QueryStringArray {\r\n return parseQueryString(window.location.search);\r\n}\r\n\r\nexport function lookupQueryStringValue(qs: QueryStringArray, k: string): string | null {\r\n for (const [key, val] of qs) {\r\n if (key === k) return val;\r\n }\r\n return null;\r\n}\r\n\r\nexport function encodeTag(tag: string): string {\r\n return encodeURIComponent(tag.replace(/\\+/g, '%2B'));\r\n}\r\n\r\nexport function fromNullableStr(s: string | null | undefined): string {\r\n return s ?? '';\r\n}\r\n\r\nexport function normalizeTags(tags: string | null): string {\r\n return tags?.replace(/,/g, ' ').replace(/\\s+/g, ' ').trim() ?? '';\r\n}\r\n\r\nexport function apiErrorMsg(t: TFunction, status: number, bodyText: string): string {\r\n const body = bodyText.trim();\r\n if (!body.includes('\\n') && !body.includes('doctype html') && body.length > 0) {\r\n return t('error.errorWithMsg', { status, msg: body });\r\n }\r\n return t('error.error', { status });\r\n}\r\n\r\n/**\r\n * Generates a short, non-cryptographic hash from a string.\r\n * @param str - The input string to hash.\r\n * @returns A short alphanumeric string hash.\r\n */\r\nexport function getShortHash(str: string): string {\r\n let hash = 5381;\r\n let i = str.length;\r\n\r\n while (i) {\r\n hash = (hash * 33) ^ str.charCodeAt(--i);\r\n }\r\n\r\n // Convert to an unsigned 32-bit integer, then to a base36 string\r\n return (hash >>> 0).toString(36);\r\n}\r\n", "import i18next from 'i18next';\r\nimport ChainedBackend from 'i18next-chained-backend';\r\nimport HttpBackend from 'i18next-http-backend';\r\nimport LocalStorageBackend from 'i18next-localstorage-backend';\r\nimport { initReactI18next } from 'react-i18next';\r\n\r\nimport translationEn from '../../static/locales/en/translation.json';\r\nimport { app } from './globals';\r\nimport { getShortHash } from './util';\r\n\r\nexport const defaultNS = 'translation';\r\nexport const fallbackNS = 'translation';\r\n\r\nconst a = app();\r\n\r\nvoid i18next\r\n .use(ChainedBackend)\r\n .use(initReactI18next)\r\n .init({\r\n lng: a.lang,\r\n fallbackLng: 'en',\r\n defaultNS: defaultNS,\r\n ns: [defaultNS],\r\n partialBundledLanguages: true,\r\n resources: {\r\n en: {\r\n translation: translationEn,\r\n },\r\n },\r\n backend: {\r\n backends: [LocalStorageBackend, HttpBackend],\r\n backendOptions: [\r\n {\r\n prefix: `i18next_res_${getShortHash(a.i18nR)}_`,\r\n expirationTime: 7 * 24 * 60 * 60 * 1000, // 7 days\r\n },\r\n {\r\n loadPath: `${a.i18nR}/{{lng}}/{{ns}}.json`,\r\n },\r\n ],\r\n },\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n load: 'currentOnly',\r\n });\r\n\r\nexport default i18next;\r\n", "import './i18n';\r\n\r\nimport { type ReactNode, useLayoutEffect } from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\n\r\nimport { logout } from './api';\r\nimport { AccountSettingsView } from './components/AccountSettings';\r\nimport { AddForm } from './components/AddForm';\r\nimport { BList } from './components/BList';\r\nimport { BulkEdit } from './components/BulkEdit';\r\nimport { NList } from './components/NList';\r\nimport { NNote } from './components/NNote';\r\nimport { NoteBulkEdit } from './components/NoteBulkEdit';\r\nimport { bindTagCloudHeader, TagCloudBody } from './components/TagCloud';\r\nimport type { AccountSettings, Bookmark, ColorSchemePreference, Note, TagCloudMode } from './types';\r\nimport { tagCloudModeToF } from './types';\r\n\r\nfunction selectEl(selector: string): Element | null {\r\n return document.querySelector(selector);\r\n}\r\n\r\nfunction viewRendered(): void {\r\n const el = document.querySelector('#content');\r\n if (el) el.setAttribute('view-rendered', '');\r\n}\r\n\r\nfunction RenderReady({ children }: { children: ReactNode }) {\r\n useLayoutEffect(() => {\r\n viewRendered();\r\n }, []);\r\n\r\n return children;\r\n}\r\n\r\nfunction renderView(renderElSelector: string, node: ReactNode): void {\r\n const el = selectEl(renderElSelector);\r\n if (!el) return;\r\n createRoot(el).render(<RenderReady>{node}</RenderReady>);\r\n}\r\n\r\nexport const logoutE = (e: Event) => () => {\r\n e.preventDefault();\r\n void logout();\r\n};\r\n\r\nexport const renderBookmarks = (renderElSelector: string) => (bmarks: Bookmark[]) => () => {\r\n renderView(renderElSelector, <BList initial={bmarks} />);\r\n};\r\n\r\nexport const renderBulkEdit = (renderElSelector: string) => (bcount: number) => () => {\r\n renderView(renderElSelector, <BulkEdit bcount={bcount} />);\r\n};\r\n\r\nexport const renderTagCloud = (renderElSelector: string) => (tagCloudMode: TagCloudMode) => () => {\r\n const el = selectEl(renderElSelector);\r\n if (!el) return;\r\n createRoot(el).render(<TagCloudBody initialMode={tagCloudModeToF(tagCloudMode)} />);\r\n};\r\n\r\nexport { bindTagCloudHeader };\r\n\r\nexport const renderAddForm = (renderElSelector: string) => (bmark: Bookmark) => () => {\r\n renderView(renderElSelector, <AddForm initial={bmark} />);\r\n};\r\n\r\nexport const renderNotes = (renderElSelector: string) => (notes: Note[]) => () => {\r\n renderView(renderElSelector, <NList initial={notes} />);\r\n};\r\n\r\nexport const renderNoteBulkEdit = (renderElSelector: string) => (ncount: number) => () => {\r\n renderView(renderElSelector, <NoteBulkEdit ncount={ncount} />);\r\n};\r\n\r\nexport const renderNote = (renderElSelector: string) => (note: Note) => () => {\r\n renderView(renderElSelector, <NNote initial={note} />);\r\n};\r\n\r\nexport const renderAccountSettings =\r\n (renderElSelector: string) => (accountSettings: AccountSettings) => () => {\r\n renderView(renderElSelector, <AccountSettingsView initial={accountSettings} />);\r\n };\r\n\r\nexport function initColorSchemeToggle(): void {\r\n function isColorSchemePreference(value: string | null): value is ColorSchemePreference {\r\n return value === 'light' || value === 'dark';\r\n }\r\n function getEffectiveColorScheme(): ColorSchemePreference {\r\n const explicit = document.documentElement.dataset.colorScheme;\r\n if (explicit === 'light' || explicit === 'dark') return explicit;\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n }\r\n\r\n function applyColorSchemePreference(preference: ColorSchemePreference): void {\r\n document.documentElement.dataset.colorScheme = preference;\r\n }\r\n\r\n const colorSchemeStorageKey = 'espial-color-scheme';\r\n const stored = window.localStorage.getItem(colorSchemeStorageKey);\r\n if (isColorSchemePreference(stored)) {\r\n applyColorSchemePreference(stored);\r\n }\r\n\r\n const toggleEl = document.querySelector<HTMLAnchorElement>('#color-scheme-toggle');\r\n if (!toggleEl) return;\r\n\r\n toggleEl.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n const next: ColorSchemePreference = getEffectiveColorScheme() === 'dark' ? 'light' : 'dark';\r\n applyColorSchemePreference(next);\r\n window.localStorage.setItem(colorSchemeStorageKey, next);\r\n });\r\n}\r\n", "/**\nBase class for all Ky-specific errors. `HTTPError`, `NetworkError`, `TimeoutError`, and `ForceRetryError` extend this class.\n\nYou can use `instanceof KyError` to check if an error originated from Ky, or use the `isKyError()` type guard for cross-realm compatibility and TypeScript type narrowing.\n\nNote: `SchemaValidationError` is intentionally not considered a Ky error. `KyError` covers failures in Ky's HTTP lifecycle (bad status, timeout, retry), while schema validation errors originate from the user-provided schema, not from Ky itself.\n*/\nexport class KyError extends Error {\n\toverride name = 'KyError';\n\n\tget isKyError(): true {\n\t\treturn true;\n\t}\n}\n", "import type {NormalizedOptions} from '../types/options.js';\nimport type {KyRequest} from '../types/request.js';\nimport type {KyResponse} from '../types/response.js';\nimport {KyError} from './KyError.js';\n\n/**\nError thrown when the response has a non-2xx status code and `throwHttpErrors` is enabled.\n\nThe error has a `response` property with the `Response` object, a `request` property with the `Request` object, an `options` property with the normalized options (either passed to `ky` when creating an instance with `ky.create()` or directly when performing the request), and a `data` property with the pre-parsed response body. For JSON responses (based on `Content-Type`), the body is parsed using the `parseJson` option if set, or `JSON.parse` by default. For other content types, it is set as plain text. If the body is empty or parsing fails, `data` will be `undefined`. To avoid hanging or excessive buffering, `error.data` population is bounded by the request timeout and a 10 MiB response body size limit. The `data` property is populated before `beforeError` hooks run, so hooks can access it.\n\nThe response body is automatically consumed when populating `error.data`, so `error.response.json()` and other body methods will not work. Use `error.data` instead. The `error.response` object is still available for headers, status, etc.\n\nBe aware that some types of errors, such as network errors, inherently mean that a response was not received. In that case, the error will be an instance of `NetworkError` instead of `HTTPError` and will not contain a `response` property.\n*/\nexport class HTTPError<T = unknown> extends KyError {\n\toverride name = 'HTTPError' as const;\n\tresponse: KyResponse<T>;\n\trequest: KyRequest;\n\toptions: NormalizedOptions;\n\tdata: T | string | undefined;\n\n\tconstructor(response: Response, request: Request, options: NormalizedOptions) {\n\t\tconst code = (response.status || response.status === 0) ? response.status : '';\n\t\tconst title = response.statusText ?? '';\n\t\tconst status = `${code} ${title}`.trim();\n\t\tconst reason = status ? `status code ${status}` : 'an unknown error';\n\n\t\tsuper(`Request failed with ${reason}: ${request.method} ${request.url}`);\n\n\t\tthis.response = response;\n\t\tthis.request = request;\n\t\tthis.options = options;\n\t}\n}\n", "import type {KyRequest} from '../types/request.js';\nimport {KyError} from './KyError.js';\n\n/**\nError thrown when a network error occurs during the request (e.g., DNS failure, connection refused, offline). It has a `request` property with the `Request` object. The original error is available via the standard `cause` property.\n\nNetwork errors are automatically retried (for retriable methods).\n\nNote: Network errors are detected using runtime-specific heuristics. Unrecognized runtimes may produce errors that are not wrapped in `NetworkError`. Use the `shouldRetry` option to handle such cases.\n*/\nexport class NetworkError extends KyError {\n\toverride name = 'NetworkError' as const;\n\trequest: KyRequest;\n\n\tconstructor(request: Request, options?: {cause?: Error}) {\n\t\tsuper(`Request failed due to a network error: ${request.method} ${request.url}`, options);\n\t\tthis.request = request;\n\t}\n}\n", "/**\nWrapper for non-Error values that were thrown.\n\nIn JavaScript, any value can be thrown (not just Error instances). This class wraps such values to ensure consistent error handling.\n*/\nexport class NonError extends Error {\n\toverride name = 'NonError';\n\treadonly value: unknown;\n\n\tconstructor(value: unknown) {\n\t\tlet message = 'Non-error value was thrown';\n\n\t\t// Intentionally minimal as this error is just an edge-case.\n\t\ttry {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tmessage = value;\n\t\t\t} else if (value && typeof value === 'object' && 'message' in value && typeof value.message === 'string') {\n\t\t\t\tmessage = value.message;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Use default message if accessing properties throws\n\t\t}\n\n\t\tsuper(message);\n\n\t\tthis.value = value;\n\t}\n}\n", "import type {ForceRetryOptions} from '../core/constants.js';\nimport {KyError} from './KyError.js';\nimport {NonError} from './NonError.js';\n\n/**\nError used to signal a forced retry from `afterResponse` hooks.\n\nThis is thrown when `ky.retry()` is returned from an `afterResponse` hook. It is observable in `beforeRetry` and `beforeError` hooks via the `isForceRetryError()` type guard.\n*/\nexport class ForceRetryError extends KyError {\n\toverride name = 'ForceRetryError' as const;\n\tcustomDelay: number | undefined;\n\tcode: string | undefined;\n\tcustomRequest: Request | undefined;\n\n\tconstructor(options?: ForceRetryOptions) {\n\t\t// Runtime protection: wrap non-Error causes in NonError\n\t\t// TypeScript type is Error for guidance, but JS users can pass anything\n\t\tconst cause = options?.cause\n\t\t\t? (options.cause instanceof Error ? options.cause : new NonError(options.cause))\n\t\t\t: undefined;\n\n\t\tsuper(\n\t\t\toptions?.code ? `Forced retry: ${options.code}` : 'Forced retry',\n\t\t\tcause ? {cause} : undefined,\n\t\t);\n\n\t\tthis.customDelay = options?.delay;\n\t\tthis.code = options?.code;\n\t\tthis.customRequest = options?.request;\n\t}\n}\n", "import type {StandardSchemaV1Issue} from '../types/standard-schema.js';\n\n/**\nThe error thrown when [Standard Schema](https://github.com/standard-schema/standard-schema) validation fails in `.json(schema)`. It has an `issues` property with the validation issues from the schema.\n\nThis error intentionally does not extend `KyError` because it does not represent a failure in Ky's HTTP lifecycle. The request succeeded; the user's schema rejected the data. As such, it is not matched by `isKyError()`.\n\n@example\n```\nimport ky, {SchemaValidationError} from 'ky';\nimport {z} from 'zod';\n\nconst userSchema = z.object({name: z.string()});\n\ntry {\n\tconst user = await ky('/api/user').json(userSchema);\n\tconsole.log(user.name);\n} catch (error) {\n\tif (error instanceof SchemaValidationError) {\n\t\tconsole.error(error.issues);\n\t}\n}\n```\n*/\nexport class SchemaValidationError extends Error {\n\toverride name = 'SchemaValidationError' as const;\n\treadonly issues: readonly StandardSchemaV1Issue[];\n\n\tconstructor(issues: readonly StandardSchemaV1Issue[]) {\n\t\tsuper('Response schema validation failed');\n\t\tthis.issues = issues;\n\t}\n}\n", "import type {KyRequest} from '../types/request.js';\nimport {KyError} from './KyError.js';\n\n/**\nError thrown when the request times out. It has a `request` property with the `Request` object.\n*/\nexport class TimeoutError extends KyError {\n\toverride name = 'TimeoutError' as const;\n\trequest: KyRequest;\n\n\tconstructor(request: Request) {\n\t\tsuper(`Request timed out: ${request.method} ${request.url}`);\n\t\tthis.request = request;\n\t}\n}\n", "import type {Expect, Equal} from '@type-challenges/utils';\nimport {type KyOptionsRegistry, type RequestHttpMethod} from '../types/options.js';\n\nexport const supportsRequestStreams = (() => {\n\tlet duplexAccessed = false;\n\tlet hasContentType = false;\n\tconst supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n\tconst supportsRequest = typeof globalThis.Request === 'function';\n\n\tif (supportsReadableStream && supportsRequest) {\n\t\ttry {\n\t\t\thasContentType = new globalThis.Request('https://empty.invalid', {\n\t\t\t\tbody: new globalThis.ReadableStream(),\n\t\t\t\tmethod: 'POST',\n\t\t\t\t// @ts-expect-error - Types are outdated.\n\t\t\t\tget duplex() {\n\t\t\t\t\tduplexAccessed = true;\n\t\t\t\t\treturn 'half';\n\t\t\t\t},\n\t\t\t}).headers.has('Content-Type');\n\t\t} catch (error) {\n\t\t\t// QQBrowser on iOS throws \"unsupported BodyInit type\" error (see issue #581)\n\t\t\tif (error instanceof Error && error.message === 'unsupported BodyInit type') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\treturn duplexAccessed && !hasContentType;\n})();\n\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsAbortSignal = typeof globalThis.AbortSignal === 'function' && typeof globalThis.AbortSignal.any === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\n\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'] as const;\n\nconst validate = <T extends Array<true>>() => undefined as unknown as T;\nvalidate<[\n\tExpect<Equal<typeof requestMethods[number], RequestHttpMethod>>,\n]>();\n\nexport const responseTypes = {\n\tjson: 'application/json',\n\ttext: 'text/*',\n\tformData: 'multipart/form-data',\n\tarrayBuffer: '*/*',\n\tblob: '*/*',\n\t// Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).\n\t// We still feature-check at runtime before exposing the shortcut.\n\tbytes: '*/*',\n} as const;\n\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2_147_483_647;\n\n// Size in bytes of a typical form boundary (e.g., '------WebKitFormBoundaryaxpyiPgbbPti10Rw'), used to help estimate upload size\nexport const usualFormBoundarySize = 40;\n\n/**\nSymbol that can be returned by a `beforeRetry` hook to stop retrying without throwing an error.\n*/\nexport const stop = Symbol('stop');\n\n/**\nOptions for forcing a retry via `ky.retry()`.\n*/\nexport type ForceRetryOptions = {\n\t/**\n\tCustom delay in milliseconds before retrying.\n\n\tIf not provided, uses the default retry delay calculation based on `retry.delay` configuration.\n\n\t**Note:** Custom delays bypass jitter and `backoffLimit`. This is intentional, as custom delays often come from server responses (e.g., `Retry-After` headers) and should be respected exactly as specified.\n\t*/\n\tdelay?: number;\n\n\t/**\n\tError code for the retry.\n\n\tThis machine-readable identifier will be included in the error message passed to `beforeRetry` hooks, allowing you to distinguish between different types of forced retries.\n\n\t@example\n\t```\n\treturn ky.retry({code: 'RATE_LIMIT'});\n\t// Resulting error message: 'Forced retry: RATE_LIMIT'\n\t```\n\t*/\n\tcode?: string;\n\n\t/**\n\tOriginal error that caused the retry.\n\n\tThis allows you to preserve the error chain when forcing a retry based on caught exceptions. The error will be set as the `cause` of the `ForceRetryError`, enabling proper error chain traversal.\n\n\t@example\n\t```\n\ttry {\n\t\tconst data = await response.json();\n\t\tvalidateBusinessLogic(data);\n\t} catch (error) {\n\t\treturn ky.retry({\n\t\t\tcode: 'VALIDATION_FAILED',\n\t\t\tcause: error // Preserves original error in chain\n\t\t});\n\t}\n\t```\n\t*/\n\tcause?: Error;\n\n\t/**\n\tCustom request to use for the retry.\n\n\tThis allows you to modify or completely replace the request during a forced retry. The custom request becomes the starting point for the retry - `beforeRetry` hooks can still further modify it if needed.\n\n\t**Note:** The custom request's `signal` will be replaced with Ky's managed signal to handle timeouts and user-provided abort signals correctly. If the original request body has been consumed, you must provide a new body or clone the request before consuming.\n\n\t**Warning:** Custom retry requests are not sanitized. If you reuse headers across origins, remove any credentials you do not want forwarded.\n\n\t@example\n\t```\n\t// Fallback to a different endpoint\n\treturn ky.retry({\n\t\trequest: new Request('https://backup-api.com/endpoint', {\n\t\t\tmethod: request.method,\n\t\t\theaders: request.headers,\n\t\t}),\n\t\tcode: 'BACKUP_ENDPOINT'\n\t});\n\n\t// Retry with refreshed authentication token\n\tconst data = await response.json();\n\treturn ky.retry({\n\t\trequest: new Request(request, {\n\t\t\theaders: {\n\t\t\t\t...Object.fromEntries(request.headers),\n\t\t\t\t'Authorization': `Bearer ${data.newToken}`\n\t\t\t}\n\t\t}),\n\t\tcode: 'TOKEN_REFRESHED'\n\t});\n\t```\n\t*/\n\trequest?: Request;\n};\n\n/**\nMarker returned by `ky.retry()` to signal a forced retry from `afterResponse` hooks.\n*/\nexport class RetryMarker {\n\toptions: ForceRetryOptions | undefined;\n\n\tconstructor(options?: ForceRetryOptions) {\n\t\tthis.options = options;\n\t}\n}\n\n/**\nForce a retry from an `afterResponse` hook.\n\nThis allows you to retry a request based on the response content, even if the response has a successful status code. The retry will respect the `retry.limit` option and skip the `shouldRetry` check. The forced retry is observable in `beforeRetry` hooks, where the error will be a `ForceRetryError`.\n\n@param options - Optional configuration for the retry.\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n\thooks: {\n\t\tafterResponse: [\n\t\t\tasync ({request, response}) => {\n\t\t\t\t// Retry based on response body content\n\t\t\t\tif (response.status === 200) {\n\t\t\t\t\tconst data = await response.json();\n\n\t\t\t\t\t// Simple retry with default delay\n\t\t\t\t\tif (data.error?.code === 'TEMPORARY_ERROR') {\n\t\t\t\t\t\treturn ky.retry();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Retry with custom delay from API response\n\t\t\t\t\tif (data.error?.code === 'RATE_LIMIT') {\n\t\t\t\t\t\treturn ky.retry({\n\t\t\t\t\t\t\tdelay: data.error.retryAfter * 1000,\n\t\t\t\t\t\t\tcode: 'RATE_LIMIT'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Retry with a modified request (e.g., fallback endpoint)\n\t\t\t\t\tif (data.error?.code === 'FALLBACK_TO_BACKUP') {\n\t\t\t\t\t\treturn ky.retry({\n\t\t\t\t\t\t\trequest: new Request('https://backup-api.com/endpoint', {\n\t\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\t\theaders: request.headers,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tcode: 'BACKUP_ENDPOINT'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Retry with refreshed authentication\n\t\t\t\t\tif (data.error?.code === 'TOKEN_REFRESH' && data.newToken) {\n\t\t\t\t\t\treturn ky.retry({\n\t\t\t\t\t\t\trequest: new Request(request, {\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t...Object.fromEntries(request.headers),\n\t\t\t\t\t\t\t\t\t'Authorization': `Bearer ${data.newToken}`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tcode: 'TOKEN_REFRESHED'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Retry with cause to preserve error chain\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvalidateResponse(data);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treturn ky.retry({\n\t\t\t\t\t\t\tcode: 'VALIDATION_FAILED',\n\t\t\t\t\t\t\tcause: error\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\tbeforeRetry: [\n\t\t\t({error, retryCount}) => {\n\t\t\t\t// Observable in beforeRetry hooks\n\t\t\t\tif (isForceRetryError(error)) {\n\t\t\t\t\tconsole.log(`Forced retry #${retryCount}: ${error.message}`);\n\t\t\t\t\t// Example output: \"Forced retry #1: Forced retry: RATE_LIMIT\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n});\n\nconst response = await api.get('https://example.com/api');\n```\n*/\nexport const retry = (options?: ForceRetryOptions) => new RetryMarker(options);\n\nexport const kyOptionKeys: KyOptionsRegistry = {\n\tjson: true,\n\tparseJson: true,\n\tstringifyJson: true,\n\tsearchParams: true,\n\tbaseUrl: true,\n\tprefix: true,\n\tretry: true,\n\ttimeout: true,\n\ttotalTimeout: true,\n\thooks: true,\n\tthrowHttpErrors: true,\n\tonDownloadProgress: true,\n\tonUploadProgress: true,\n\tfetch: true,\n\tcontext: true,\n};\n\n// Standard RequestInit options that should NOT be passed separately to fetch()\n// because they're already applied to the Request object.\n// Note: `dispatcher` and `priority` are NOT included here - they're fetch-only\n// options that the Request constructor doesn't accept, so they need to be passed\n// separately to fetch().\nexport const requestOptionsRegistry = {\n\tmethod: true,\n\theaders: true,\n\tbody: true,\n\tmode: true,\n\tcredentials: true,\n\tcache: true,\n\tredirect: true,\n\treferrer: true,\n\treferrerPolicy: true,\n\tintegrity: true,\n\tkeepalive: true,\n\tsignal: true,\n\twindow: true,\n\tduplex: true,\n} as const;\n", "import type {Options} from '../types/options.js';\nimport {usualFormBoundarySize} from '../core/constants.js';\n\nconst encoder = new TextEncoder();\n\n// eslint-disable-next-line @typescript-eslint/no-restricted-types\nexport const getBodySize = (body?: BodyInit | null): number => {\n\tif (!body) {\n\t\treturn 0;\n\t}\n\n\tif (body instanceof FormData) {\n\t\t// This is an approximation, as FormData size calculation is not straightforward\n\t\tlet size = 0;\n\n\t\tfor (const [key, value] of body) {\n\t\t\tsize += usualFormBoundarySize;\n\t\t\tsize += encoder.encode(`Content-Disposition: form-data; name=\"${key}\"`).byteLength;\n\t\t\tsize += typeof value === 'string'\n\t\t\t\t? encoder.encode(value).byteLength\n\t\t\t\t: value.size;\n\t\t}\n\n\t\treturn size;\n\t}\n\n\tif (body instanceof Blob) {\n\t\treturn body.size;\n\t}\n\n\tif (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\n\t\treturn body.byteLength;\n\t}\n\n\tif (typeof body === 'string') {\n\t\treturn encoder.encode(body).byteLength;\n\t}\n\n\tif (body instanceof URLSearchParams) {\n\t\treturn encoder.encode(body.toString()).byteLength;\n\t}\n\n\treturn 0;\n};\n\nconst withProgress = (stream: ReadableStream<Uint8Array>, totalBytes: number, onProgress: Options['onDownloadProgress'] | Options['onUploadProgress']): ReadableStream<Uint8Array> => {\n\tlet previousChunk: Uint8Array | undefined;\n\tlet transferredBytes = 0;\n\n\treturn stream.pipeThrough(new TransformStream<Uint8Array, Uint8Array>({\n\t\ttransform(currentChunk, controller) {\n\t\t\tcontroller.enqueue(currentChunk);\n\n\t\t\tif (previousChunk) {\n\t\t\t\ttransferredBytes += previousChunk.byteLength;\n\n\t\t\t\tlet percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n\t\t\t\t// Avoid reporting 100% progress before the stream is actually finished (in case totalBytes is inaccurate)\n\t\t\t\tif (percent >= 1) {\n\t\t\t\t\t// Epsilon is used here to get as close as possible to 100% without reaching it.\n\t\t\t\t\t// If we were to use 0.99 here, percent could potentially go backwards.\n\t\t\t\t\tpercent = 1 - Number.EPSILON;\n\t\t\t\t}\n\n\t\t\t\tonProgress?.({percent, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes}, previousChunk);\n\t\t\t}\n\n\t\t\tpreviousChunk = currentChunk;\n\t\t},\n\t\tflush() {\n\t\t\tif (previousChunk) {\n\t\t\t\ttransferredBytes += previousChunk.byteLength;\n\t\t\t\tonProgress?.({percent: 1, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes}, previousChunk);\n\t\t\t}\n\t\t},\n\t}));\n};\n\nexport const streamResponse = (response: Response, onDownloadProgress: Options['onDownloadProgress']) => {\n\tif (!response.body) {\n\t\treturn response;\n\t}\n\n\tconst responseInit = {\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t\theaders: response.headers,\n\t};\n\n\tif (response.status === 204) {\n\t\treturn new Response(null, responseInit);\n\t}\n\n\tconst totalBytes = Math.max(0, Number(response.headers.get('content-length')) || 0);\n\treturn new Response(withProgress(response.body, totalBytes, onDownloadProgress), responseInit);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-restricted-types\nexport const streamRequest = (request: Request, onUploadProgress: Options['onUploadProgress'], originalBody?: BodyInit | null) => {\n\tif (!request.body) {\n\t\treturn request;\n\t}\n\n\t// Use original body for size calculation since request.body is already a stream\n\tconst totalBytes = getBodySize(originalBody ?? request.body);\n\n\treturn new Request(request, {\n\t\t// @ts-expect-error - Types are outdated.\n\t\tduplex: 'half',\n\t\tbody: withProgress(request.body, totalBytes, onUploadProgress),\n\t});\n};\n", "// eslint-disable-next-line @typescript-eslint/no-restricted-types\nexport const isObject = (value: unknown): value is object => value !== null && typeof value === 'object';\n", "import type {KyHeadersInit, Options} from '../types/options.js';\nimport type {Hooks} from '../types/hooks.js';\nimport {supportsAbortSignal} from '../core/constants.js';\nimport {isObject} from './is.js';\n\nconst replaceSymbol: unique symbol = Symbol('replaceOption');\n\ntype ReplaceMarked<T> = {\n\t[replaceSymbol]: true;\n\tvalue: T;\n};\n\ntype ReplaceState<T> = {\n\tisReplace: boolean;\n\tvalue: T;\n};\n\nconst getReplaceState = <T>(value: T): ReplaceState<T> =>\n\tisObject(value) && (value as any)[replaceSymbol] === true\n\t\t? {\n\t\t\tisReplace: true,\n\t\t\tvalue: (value as unknown as ReplaceMarked<T>).value,\n\t\t}\n\t\t: {\n\t\t\tisReplace: false,\n\t\t\tvalue,\n\t\t};\n\n/**\nWraps a value so that `ky.extend()` will replace the parent value instead of merging with it. Works with hooks, headers, search parameters, context, and any other deep-merged option.\n\nBy default, `.extend()` deep-merges options with the parent instance: hooks get appended, headers get merged, and search parameters get accumulated. Use `replaceOption` when you want to fully replace a merged property instead.\n\n@example\n```\nimport ky, {replaceOption} from 'ky';\n\nconst base = ky.create({\n\thooks: {beforeRequest: [addAuth, addTracking]},\n});\n\n// Replaces instead of appending\nconst extended = base.extend({\n\thooks: replaceOption({beforeRequest: [onlyThis]}),\n});\n// hooks.beforeRequest is now [onlyThis], not [addAuth, addTracking, onlyThis]\n```\n*/\nexport const replaceOption = <T>(value: T): T => {\n\tconst markedValue: ReplaceMarked<T> = {[replaceSymbol]: true, value};\n\treturn markedValue as unknown as T;\n};\n\nexport const validateAndMerge = (...sources: Array<Partial<Options> | undefined>): Partial<Options> => {\n\tfor (const source of sources) {\n\t\tif ((!isObject(source) || Array.isArray(source)) && source !== undefined) {\n\t\t\tthrow new TypeError('The `options` argument must be an object');\n\t\t}\n\t}\n\n\treturn deepMerge({}, ...sources);\n};\n\nexport const mergeHeaders = (source1: KyHeadersInit = {}, source2: KyHeadersInit = {}) => {\n\tconst result = new globalThis.Headers(source1 as RequestInit['headers']);\n\tconst isHeadersInstance = source2 instanceof globalThis.Headers;\n\tconst source = new globalThis.Headers(source2 as RequestInit['headers']);\n\n\tfor (const [key, value] of source.entries()) {\n\t\tif ((isHeadersInstance && value === 'undefined') || value === undefined) {\n\t\t\tresult.delete(key);\n\t\t} else {\n\t\t\tresult.set(key, value);\n\t\t}\n\t}\n\n\treturn result;\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n\tif (!isObject(value) || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === Object.prototype || prototype === null;\n};\n\nexport const cloneShallow = <T>(value: T): T => {\n\tif (value instanceof URLSearchParams) {\n\t\tconst copy = new URLSearchParams(value) as URLSearchParams & {[deletedParametersSymbol]?: Set<string>};\n\t\tconst deleted = (value as URLSearchParams & {[deletedParametersSymbol]?: Set<string>})[deletedParametersSymbol];\n\t\tif (deleted) {\n\t\t\t// Preserve internal deletion markers so init-hook cloning does not resurrect params removed during option merging.\n\t\t\tcopy[deletedParametersSymbol] = new Set(deleted);\n\t\t}\n\n\t\treturn copy as T;\n\t}\n\n\tif (value instanceof globalThis.Headers) {\n\t\treturn new globalThis.Headers(value) as T;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn [...value] as T;\n\t}\n\n\tif (isPlainObject(value)) {\n\t\tconst copy = {...value};\n\t\treturn copy as T;\n\t}\n\n\treturn value;\n};\n\nconst normalizeHeaderObject = (headers: Record<string, string | undefined>): Record<string, string> =>\n\tObject.fromEntries(\n\t\tObject.entries(headers).filter((entry): entry is [string, string] => entry[1] !== undefined),\n\t);\n\nconst mergeHeaderContainers = (source1: KyHeadersInit, source2: KyHeadersInit): KyHeadersInit => {\n\tif (isPlainObject(source1) && isPlainObject(source2)) {\n\t\treturn normalizeHeaderObject({...source1, ...source2});\n\t}\n\n\treturn mergeHeaders(source1, source2);\n};\n\nfunction newHookValue<K extends keyof Hooks>(original: Hooks, incoming: Hooks, property: K): Required<Hooks>[K] {\n\treturn (Object.hasOwn(incoming, property) && incoming[property] === undefined)\n\t\t? []\n\t\t: deepMerge<Required<Hooks>[K]>(original[property] ?? [], incoming[property] ?? []);\n}\n\nexport const mergeHooks = (original: Hooks = {}, incoming: Hooks = {}): Required<Hooks> => (\n\t{\n\t\tinit: newHookValue(original, incoming, 'init'),\n\t\tbeforeRequest: newHookValue(original, incoming, 'beforeRequest'),\n\t\tbeforeRetry: newHookValue(original, incoming, 'beforeRetry'),\n\t\tbeforeError: newHookValue(original, incoming, 'beforeError'),\n\t\tafterResponse: newHookValue(original, incoming, 'afterResponse'),\n\t}\n);\n\nexport const deletedParametersSymbol = Symbol('deletedParameters');\n\nconst appendSearchParameters = (target: any, source: any): URLSearchParams => {\n\tconst result = new URLSearchParams() as URLSearchParams & {[deletedParametersSymbol]?: Set<string>};\n\tconst deleted = new Set<string>();\n\n\tfor (const input of [target, source]) {\n\t\tif (input === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (input instanceof URLSearchParams) {\n\t\t\tfor (const [key, value] of input.entries()) {\n\t\t\t\tresult.append(key, value);\n\t\t\t\tdeleted.delete(key);\n\t\t\t}\n\n\t\t\tconst inputDeleted = (input as any)[deletedParametersSymbol] as Set<string> | undefined;\n\t\t\tif (inputDeleted) {\n\t\t\t\tfor (const key of inputDeleted) {\n\t\t\t\t\tresult.delete(key);\n\t\t\t\t\tdeleted.add(key);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (Array.isArray(input)) {\n\t\t\tfor (const pair of input) {\n\t\t\t\tif (!Array.isArray(pair) || pair.length !== 2) {\n\t\t\t\t\tthrow new TypeError('Array search parameters must be provided in [[key, value], ...] format');\n\t\t\t\t}\n\n\t\t\t\tresult.append(String(pair[0]), String(pair[1]));\n\t\t\t\tdeleted.delete(String(pair[0]));\n\t\t\t}\n\t\t} else if (isObject(input)) {\n\t\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\tresult.delete(key);\n\t\t\t\t\tdeleted.add(key);\n\t\t\t\t} else {\n\t\t\t\t\tresult.append(key, String(value));\n\t\t\t\t\tdeleted.delete(key);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// String\n\t\t\tconst parameters = new URLSearchParams(input);\n\t\t\tfor (const [key, value] of parameters.entries()) {\n\t\t\t\tresult.append(key, value);\n\t\t\t\tdeleted.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (deleted.size > 0) {\n\t\tresult[deletedParametersSymbol] = deleted;\n\t}\n\n\treturn result;\n};\n\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = <T>(...sources: Array<Partial<T> | undefined>): T => {\n\tlet returnValue: any = {};\n\tlet headers: KyHeadersInit = {};\n\tlet hooks = {};\n\tlet searchParameters: any;\n\tconst signals: AbortSignal[] = [];\n\n\tfor (const source of sources) {\n\t\tif (Array.isArray(source)) {\n\t\t\tif (!Array.isArray(returnValue)) {\n\t\t\t\treturnValue = [];\n\t\t\t}\n\n\t\t\treturnValue = [...returnValue, ...source];\n\t\t} else if (isObject(source)) {\n\t\t\tfor (let [key, value] of Object.entries(source)) {\n\t\t\t\t// Special handling for AbortSignal instances\n\t\t\t\tif (key === 'signal' && value instanceof globalThis.AbortSignal) {\n\t\t\t\t\tsignals.push(value);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst replaceState = getReplaceState(value);\n\t\t\t\tconst {isReplace} = replaceState;\n\t\t\t\tvalue = replaceState.value;\n\n\t\t\t\t// Special handling for context - shallow merge only\n\t\t\t\tif (key === 'context') {\n\t\t\t\t\tif (value !== undefined && value !== null && (!isObject(value) || Array.isArray(value))) {\n\t\t\t\t\t\tthrow new TypeError('The `context` option must be an object');\n\t\t\t\t\t}\n\n\t\t\t\t\t// Shallow merge: always create a new object to prevent mutation bugs\n\t\t\t\t\treturnValue = {\n\t\t\t\t\t\t...returnValue,\n\t\t\t\t\t\tcontext: (value === undefined || value === null)\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: (isReplace\n\t\t\t\t\t\t\t\t? {...value}\n\t\t\t\t\t\t\t\t: {...returnValue.context, ...value}),\n\t\t\t\t\t};\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Special handling for searchParams\n\t\t\t\tif (key === 'searchParams') {\n\t\t\t\t\tif (value === undefined || value === null) {\n\t\t\t\t\t\t// Explicit undefined or null removes searchParams\n\t\t\t\t\t\tsearchParameters = undefined;\n\t\t\t\t\t} else if (isReplace) {\n\t\t\t\t\t\tsearchParameters = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// First source: keep as-is to preserve type (string/object/URLSearchParams)\n\t\t\t\t\t\t// Subsequent sources: merge and convert to URLSearchParams\n\t\t\t\t\t\tsearchParameters = searchParameters === undefined ? value : appendSearchParameters(searchParameters, value);\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (isObject(value) && !isReplace && key in returnValue) {\n\t\t\t\t\tvalue = deepMerge(returnValue[key], value);\n\t\t\t\t}\n\n\t\t\t\treturnValue = {...returnValue, [key]: value};\n\t\t\t}\n\n\t\t\tif (isObject((source as any).hooks)) {\n\t\t\t\tconst {value: hookValue, isReplace} = getReplaceState((source as any).hooks);\n\t\t\t\thooks = isReplace\n\t\t\t\t\t? mergeHooks({}, hookValue)\n\t\t\t\t\t: mergeHooks(hooks, hookValue);\n\n\t\t\t\treturnValue.hooks = hooks;\n\t\t\t}\n\n\t\t\tif (isObject((source as any).headers)) {\n\t\t\t\tconst {value: headerValue, isReplace} = getReplaceState((source as any).headers);\n\t\t\t\theaders = isReplace\n\t\t\t\t\t? cloneShallow(headerValue as KyHeadersInit)\n\t\t\t\t\t: mergeHeaderContainers(headers, headerValue as KyHeadersInit);\n\n\t\t\t\treturnValue.headers = headers;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (searchParameters !== undefined) {\n\t\treturnValue.searchParams = searchParameters;\n\t}\n\n\tif (signals.length > 0) {\n\t\tif (signals.length === 1) {\n\t\t\treturnValue.signal = signals[0];\n\t\t} else if (supportsAbortSignal) {\n\t\t\treturnValue.signal = AbortSignal.any(signals);\n\t\t} else {\n\t\t\t// When AbortSignal.any is not available, use the last signal\n\t\t\t// This maintains the previous behavior before signal merging was added\n\t\t\t// This can be remove when the `supportsAbortSignal` check is removed.`\n\t\t\treturnValue.signal = signals.at(-1);\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n", "import {requestMethods} from '../core/constants.js';\nimport type {RetryOptions} from '../types/retry.js';\nimport type {HttpMethod, RequestHttpMethod} from '../types/options.js';\n\nexport const normalizeRequestMethod = (input: string): string =>\n\trequestMethods.includes(input as RequestHttpMethod) ? input.toUpperCase() : input;\n\nconst retryMethods: HttpMethod[] = ['get', 'put', 'head', 'delete', 'options', 'trace'];\n\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\n\nconst retryAfterStatusCodes = [413, 429, 503];\n\ntype InternalRetryOptions = Required<Omit<RetryOptions, 'shouldRetry'>> & Pick<RetryOptions, 'shouldRetry'>;\n\nconst defaultRetryOptions: InternalRetryOptions = {\n\tlimit: 2,\n\tmethods: retryMethods,\n\tstatusCodes: retryStatusCodes,\n\tafterStatusCodes: retryAfterStatusCodes,\n\tmaxRetryAfter: Number.POSITIVE_INFINITY,\n\tbackoffLimit: Number.POSITIVE_INFINITY,\n\tdelay: attemptCount => 0.3 * (2 ** (attemptCount - 1)) * 1000,\n\tjitter: undefined,\n\tretryOnTimeout: false,\n};\n\nexport const normalizeRetryOptions = (retry: number | RetryOptions = {}): InternalRetryOptions => {\n\tif (typeof retry === 'number') {\n\t\treturn {\n\t\t\t...defaultRetryOptions,\n\t\t\tlimit: retry,\n\t\t};\n\t}\n\n\tif (retry.methods && !Array.isArray(retry.methods)) {\n\t\tthrow new Error('retry.methods must be an array');\n\t}\n\n\tif (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n\t\tthrow new Error('retry.statusCodes must be an array');\n\t}\n\n\tconst normalizedRetry = Object.fromEntries(Object.entries({\n\t\t...retry,\n\t\tmethods: retry.methods?.map(method => method.toLowerCase()),\n\t}).filter(([, value]) => value !== undefined)) as RetryOptions;\n\n\treturn {\n\t\t...defaultRetryOptions,\n\t\t...normalizedRetry,\n\t};\n};\n", "import {TimeoutError} from '../errors/TimeoutError.js';\n\nexport type TimeoutOptions = {\n\ttimeout: number;\n\tfetch: typeof fetch;\n};\n\n// `Promise.race()` workaround (#91)\nexport default async function timeout(\n\trequest: Request,\n\tinit: RequestInit,\n\tabortController: AbortController | undefined,\n\toptions: TimeoutOptions,\n): Promise<Response> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tif (abortController) {\n\t\t\t\tabortController.abort();\n\t\t\t}\n\n\t\t\treject(new TimeoutError(request));\n\t\t}, options.timeout);\n\n\t\tvoid options\n\t\t\t.fetch(request, init)\n\t\t\t.then(resolve)\n\t\t\t.catch(reject)\n\t\t\t.then(() => {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t});\n\t});\n}\n", "// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\n\nimport {type InternalOptions} from '../types/options.js';\n\nexport type DelayOptions = {\n\tsignal?: InternalOptions['signal'];\n};\n\nexport default async function delay(\n\tms: number,\n\t{signal}: DelayOptions,\n): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal) {\n\t\t\tsignal.throwIfAborted();\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tfunction abortHandler() {\n\t\t\tclearTimeout(timeoutId);\n\t\t\treject(signal!.reason as Error);\n\t\t}\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tsignal?.removeEventListener('abort', abortHandler);\n\t\t\tresolve();\n\t\t}, ms);\n\t});\n}\n", "import {kyOptionKeys, requestOptionsRegistry} from '../core/constants.js';\nimport type {SearchParamsOption} from '../types/options.js';\nimport {deletedParametersSymbol} from './merge.js';\n\nexport const findUnknownOptions = (\n\toptions: Record<string, unknown>,\n): Record<string, unknown> => {\n\tconst unknownOptions: Record<string, unknown> = {};\n\n\tfor (const key in options) {\n\t\t// Skip inherited properties\n\t\tif (!Object.hasOwn(options, key)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Forward every non-standard, non-Ky option to fetch().\n\t\t// We intentionally do not check whether the key also exists on `Request`, because some runtimes\n\t\t// patch `Request.prototype` with fetch-only extensions. For example, Next.js adds `next`, and the\n\t\t// old `key in request` heuristic dropped it unless Ky kept a special-case allowlist.\n\t\t// Passing all non-standard keys makes that allowlist unnecessary and preserves future fetch extensions too.\n\t\tif (!(key in requestOptionsRegistry) && !(key in kyOptionKeys)) {\n\t\t\tunknownOptions[key] = options[key];\n\t\t}\n\t}\n\n\treturn unknownOptions;\n};\n\nexport const hasSearchParameters = (search: SearchParamsOption): boolean => {\n\tif (search === undefined) {\n\t\treturn false;\n\t}\n\n\t// The `typeof array` still gives \"object\", so we need different checking for array.\n\tif (Array.isArray(search)) {\n\t\treturn search.length > 0;\n\t}\n\n\tif (search instanceof URLSearchParams) {\n\t\treturn search.size > 0 || Boolean((search as any)[deletedParametersSymbol]?.size);\n\t}\n\n\t// Record\n\tif (typeof search === 'object') {\n\t\treturn Object.keys(search).length > 0;\n\t}\n\n\tif (typeof search === 'string') {\n\t\treturn search.trim().length > 0;\n\t}\n\n\treturn Boolean(search);\n};\n", "// Inlined from https://github.com/sindresorhus/is-network-error v1.3.1\n\nconst objectToString = Object.prototype.toString;\n\nconst isError = (value: unknown): value is Error => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n\t' A network error occurred.', // Bun (WebKit) - leading space is intentional\n\t'Network connection lost', // Cloudflare Workers (fetch)\n]);\n\nexport default function isRawNetworkError(error: unknown): error is TypeError {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\tconst {message, stack} = error;\n\n\t// Safari 17+ has generic message but no stack for network errors\n\tif (message === 'Load failed') {\n\t\treturn stack === undefined\n\t\t\t// Sentry adds its own stack trace to the fetch error, so also check for that\n\t\t\t|| '__sentry_captured__' in error;\n\t}\n\n\t// Deno network errors start with specific text\n\tif (message.startsWith('error sending request for url')) {\n\t\treturn true;\n\t}\n\n\t// Chrome: exact \"Failed to fetch\" or with hostname: \"Failed to fetch (example.com)\"\n\tif (message === 'Failed to fetch' || (message.startsWith('Failed to fetch (') && message.endsWith(')'))) {\n\t\treturn true;\n\t}\n\n\t// Standard network error messages\n\treturn errorMessages.has(message);\n}\n", "import type {KyError} from '../errors/KyError.js';\nimport {HTTPError} from '../errors/HTTPError.js';\nimport {NetworkError} from '../errors/NetworkError.js';\nimport {TimeoutError} from '../errors/TimeoutError.js';\nimport {ForceRetryError} from '../errors/ForceRetryError.js';\n\n// Handles cross-realm cases (e.g., iframes, different JS contexts) where `instanceof` fails.\nconst isErrorType = (error: unknown, cls: {name: string}): boolean =>\n\terror instanceof (cls as any) || (error as any)?.name === cls.name;\n\n/**\nType guard to check if an error is a `KyError`.\n\nNote: `SchemaValidationError` is intentionally not considered a Ky error. `KyError` covers failures in Ky's HTTP lifecycle (bad status, timeout, retry), while schema validation errors originate from the user-provided schema, not from Ky itself.\n\n@param error - The error to check\n@returns `true` if the error is a Ky error, `false` otherwise\n\n@example\n```\nimport ky, {isKyError} from 'ky';\ntry {\n\tconst response = await ky.get('/api/data');\n} catch (error) {\n\tif (isKyError(error)) {\n\t\t// Handle Ky-specific errors\n\t\tconsole.log('Ky error occurred:', error.message);\n\t} else {\n\t\t// Handle other errors\n\t\tconsole.log('Unknown error:', error);\n\t}\n}\n```\n*/\nexport function isKyError(error: unknown): error is KyError {\n\treturn (error as any)?.isKyError === true || isHTTPError(error) || isNetworkError(error) || isTimeoutError(error) || isForceRetryError(error);\n}\n\n/**\nType guard to check if an error is an `HTTPError`.\n\n@param error - The error to check\n@returns `true` if the error is an `HTTPError`, `false` otherwise\n\n@example\n```\nimport ky, {isHTTPError} from 'ky';\ntry {\n\tconst response = await ky.get('/api/data');\n} catch (error) {\n\tif (isHTTPError(error)) {\n\t\tconsole.log('HTTP error status:', error.response.status);\n\t}\n}\n```\n*/\nexport function isHTTPError<T = unknown>(error: unknown): error is HTTPError<T> {\n\treturn isErrorType(error, HTTPError);\n}\n\n/**\nType guard to check if an error is a `NetworkError`.\n\n@param error - The error to check\n@returns `true` if the error is a `NetworkError`, `false` otherwise\n\n@example\n```\nimport ky, {isNetworkError} from 'ky';\ntry {\n\tconst response = await ky.get('/api/data');\n} catch (error) {\n\tif (isNetworkError(error)) {\n\t\tconsole.log('Network error:', error.request.url);\n\t}\n}\n```\n*/\nexport function isNetworkError(error: unknown): error is NetworkError {\n\treturn isErrorType(error, NetworkError);\n}\n\n/**\nType guard to check if an error is a `TimeoutError`.\n\n@param error - The error to check\n@returns `true` if the error is a `TimeoutError`, `false` otherwise\n\n@example\n```\nimport ky, {isTimeoutError} from 'ky';\ntry {\n\tconst response = await ky.get('/api/data', { timeout: 1000 });\n} catch (error) {\n\tif (isTimeoutError(error)) {\n\t\tconsole.log('Request timed out:', error.request.url);\n\t}\n}\n```\n*/\nexport function isTimeoutError(error: unknown): error is TimeoutError {\n\treturn isErrorType(error, TimeoutError);\n}\n\n/**\nType guard to check if an error is a `ForceRetryError`.\n\n@param error - The error to check\n@returns `true` if the error is a `ForceRetryError`, `false` otherwise\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n\thooks: {\n\t\tbeforeRetry: [\n\t\t\t({error, retryCount}) => {\n\t\t\t\tif (isForceRetryError(error)) {\n\t\t\t\t\tconsole.log(`Forced retry #${retryCount}: ${error.code}`);\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n});\n```\n*/\nexport function isForceRetryError(error: unknown): error is ForceRetryError {\n\treturn isErrorType(error, ForceRetryError);\n}\n", "import {HTTPError} from '../errors/HTTPError.js';\nimport {NetworkError} from '../errors/NetworkError.js';\nimport {NonError} from '../errors/NonError.js';\nimport {ForceRetryError} from '../errors/ForceRetryError.js';\nimport {SchemaValidationError} from '../errors/SchemaValidationError.js';\nimport {TimeoutError} from '../errors/TimeoutError.js';\nimport type {\n\tInput,\n\tInternalOptions,\n\tNormalizedOptions,\n\tOptions,\n\tSearchParamsInit,\n\tSearchParamsOption,\n} from '../types/options.js';\nimport {type ResponsePromise} from '../types/ResponsePromise.js';\nimport type {StandardSchemaV1} from '../types/standard-schema.js';\nimport {streamRequest, streamResponse} from '../utils/body.js';\nimport {\n\tcloneShallow,\n\tmergeHeaders,\n\tmergeHooks,\n\tdeletedParametersSymbol,\n} from '../utils/merge.js';\nimport type {RetryOptions} from '../types/retry.js';\nimport {normalizeRequestMethod, normalizeRetryOptions} from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport {type ObjectEntries} from '../utils/types.js';\nimport {findUnknownOptions, hasSearchParameters} from '../utils/options.js';\nimport isRawNetworkError from '../utils/is-network-error.js';\nimport {isHTTPError, isNetworkError, isTimeoutError} from '../utils/type-guards.js';\nimport {\n\tmaxSafeTimeout,\n\tresponseTypes,\n\tstop,\n\tRetryMarker,\n\tsupportsAbortController,\n\tsupportsAbortSignal,\n\tsupportsFormData,\n\tsupportsResponseStreams,\n\tsupportsRequestStreams,\n} from './constants.js';\n\nconst maxErrorResponseBodySize = 10 * 1024 * 1024;\nconst prefixUrlRenamedErrorMessage = 'The `prefixUrl` option has been renamed `prefix` in v2 and enhanced to allow slashes in input. See also the new `baseUrl` option for improved flexibility with standard URL resolution: https://github.com/sindresorhus/ky#baseurl';\nconst timedOutResponseData = Symbol('timedOutResponseData');\n\nconst createTextDecoder = (contentType: string): TextDecoder => {\n\tconst match = /;\\s*charset\\s*=\\s*(?:\"([^\"]+)\"|([^;,\\s]+))/i.exec(contentType);\n\tconst charset = match?.[1] ?? match?.[2];\n\tif (charset) {\n\t\ttry {\n\t\t\treturn new TextDecoder(charset);\n\t\t} catch {}\n\t}\n\n\treturn new TextDecoder();\n};\n\nconst invalidSchemaMessage = 'The `schema` argument must follow the Standard Schema specification';\n\nconst cloneRetryOptions = (retry: RetryOptions | number): RetryOptions | number => {\n\tif (typeof retry !== 'object') {\n\t\treturn retry;\n\t}\n\n\t// Clone nested arrays too so init hooks can mutate retry config without leaking state across requests.\n\treturn {\n\t\t...retry,\n\t\t...(retry.methods && {methods: [...retry.methods]}),\n\t\t...(retry.statusCodes && {statusCodes: [...retry.statusCodes]}),\n\t\t...(retry.afterStatusCodes && {afterStatusCodes: [...retry.afterStatusCodes]}),\n\t};\n};\n\nconst objectToString = Object.prototype.toString;\n\nconst isRequestInstance = (value: unknown): value is Request =>\n\tvalue instanceof globalThis.Request || objectToString.call(value) === '[object Request]';\n\n// Accepted custom responses are treated as full Responses throughout Ky.\n// If a custom fetch returns one, it must behave like a Response for cloning,\n// body consumption, `json()` decoration, and any enabled stream features.\nconst isResponseInstance = (value: unknown): value is Response =>\n\tvalue instanceof globalThis.Response || objectToString.call(value) === '[object Response]';\n\nconst cloneSearchParametersForInitHook = (searchParameters: SearchParamsOption | undefined): SearchParamsOption | undefined => {\n\tif (Array.isArray(searchParameters)) {\n\t\treturn searchParameters.map(parameter => [...parameter]) as SearchParamsOption;\n\t}\n\n\treturn cloneShallow(searchParameters) as SearchParamsOption | undefined;\n};\n\n// Shallow-clone mutable option properties so init hook mutations don't leak across requests.\nfunction cloneInitHookOptions(options: Options): Options {\n\tconst clonedOptions: Options = {\n\t\t...options,\n\t\tjson: cloneShallow(options.json),\n\t\tcontext: cloneShallow(options.context)!,\n\t\theaders: cloneShallow(options.headers)!,\n\t\tsearchParams: cloneSearchParametersForInitHook(options.searchParams),\n\t};\n\n\tif (options.retry !== undefined) {\n\t\tclonedOptions.retry = cloneRetryOptions(options.retry);\n\t}\n\n\treturn clonedOptions;\n}\n\nconst validateJsonWithSchema = async (jsonValue: unknown, schema: StandardSchemaV1): Promise<unknown> => {\n\tif (\n\t\t(\n\t\t\ttypeof schema !== 'object'\n\t\t\t&& typeof schema !== 'function'\n\t\t)\n\t\t|| schema === null\n\t) {\n\t\tthrow new TypeError(invalidSchemaMessage);\n\t}\n\n\tconst standardSchema = schema['~standard'];\n\n\tif (\n\t\ttypeof standardSchema !== 'object'\n\t\t|| standardSchema === null\n\t\t|| typeof standardSchema.validate !== 'function'\n\t) {\n\t\tthrow new TypeError(invalidSchemaMessage);\n\t}\n\n\tconst validationResult = await standardSchema.validate(jsonValue);\n\n\tif (validationResult.issues) {\n\t\tthrow new SchemaValidationError(validationResult.issues);\n\t}\n\n\treturn validationResult.value;\n};\n\nexport class Ky {\n\tstatic create(input: Input, options: Options): ResponsePromise {\n\t\tconst initHooks = options.hooks?.init ?? [];\n\t\tconst initHookOptions = initHooks.length > 0 ? cloneInitHookOptions(options) : options;\n\n\t\tfor (const hook of initHooks) {\n\t\t\thook(initHookOptions);\n\t\t}\n\n\t\tconst ky = new Ky(input, initHookOptions);\n\n\t\tconst function_ = async (): Promise<Response | void> => {\n\t\t\tif (typeof ky.#options.timeout === 'number' && ky.#options.timeout > maxSafeTimeout) {\n\t\t\t\tthrow new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n\t\t\t}\n\n\t\t\tif (typeof ky.#options.totalTimeout === 'number' && ky.#options.totalTimeout > maxSafeTimeout) {\n\t\t\t\tthrow new RangeError(`The \\`totalTimeout\\` option cannot be greater than ${maxSafeTimeout}`);\n\t\t\t}\n\n\t\t\t// Delay the fetch so that body method shortcuts can set the Accept header\n\t\t\tawait Promise.resolve();\n\t\t\tconst beforeRequestResponse = await ky.#runBeforeRequestHooks();\n\t\t\tlet response = beforeRequestResponse ?? await ky.#retry(async () => ky.#fetch());\n\t\t\tlet responseFromHook = beforeRequestResponse !== undefined\n\t\t\t\t|| ky.#consumeReturnedResponseFromBeforeRetryHook();\n\n\t\t\tfor (;;) {\n\t\t\t\t// `undefined` means a hook stopped the flow without providing a response.\n\t\t\t\t// Non-native Responses still continue through Ky if they pass `isResponseInstance()`.\n\t\t\t\tif (response === undefined) {\n\t\t\t\t\treturn response;\n\t\t\t\t}\n\n\t\t\t\tif (isResponseInstance(response)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\t\tresponse = await ky.#runAfterResponseHooks(response);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (!(error instanceof ForceRetryError)) {\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\t\tconst retriedResponse: Response | void = await ky.#retryFromError(error, async () => ky.#fetch());\n\t\t\t\t\t\tif (retriedResponse === undefined) {\n\t\t\t\t\t\t\treturn retriedResponse;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponse = retriedResponse;\n\t\t\t\t\t\tresponseFromHook = ky.#consumeReturnedResponseFromBeforeRetryHook();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst currentResponse: Response = response;\n\n\t\t\t\t// Opaque responses (`response.type === 'opaque'`) from `no-cors` requests always have `status: 0` and `ok: false`, but this is not a failure - the actual status is hidden by the browser.\n\t\t\t\tif (!currentResponse.ok && currentResponse.type !== 'opaque' && (\n\t\t\t\t\ttypeof ky.#options.throwHttpErrors === 'function'\n\t\t\t\t\t\t? ky.#options.throwHttpErrors(currentResponse.status)\n\t\t\t\t\t\t: ky.#options.throwHttpErrors\n\t\t\t\t)) {\n\t\t\t\t\t// `request` must reflect the request that actually failed, but `options` stays as Ky's\n\t\t\t\t\t// normalized options snapshot. Replacement `Request` instances do not preserve the\n\t\t\t\t\t// original `BodyInit`, so trying to make `options` mirror arbitrary requests would be lossy.\n\t\t\t\t\tconst httpError: HTTPError = new HTTPError(currentResponse, ky.#getResponseRequest(currentResponse), ky.#getNormalizedOptions());\n\t\t\t\t\tconst errorToThrow: Error = httpError;\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\thttpError.data = await ky.#getResponseData(currentResponse);\n\n\t\t\t\t\tif (responseFromHook) {\n\t\t\t\t\t\tthrow errorToThrow;\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tconst retriedResponse: Response | void = await ky.#retryFromError(httpError, async () => ky.#fetch());\n\t\t\t\t\tif (retriedResponse === undefined) {\n\t\t\t\t\t\treturn retriedResponse;\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = retriedResponse;\n\t\t\t\t\tresponseFromHook = ky.#consumeReturnedResponseFromBeforeRetryHook();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!isResponseInstance(response)) {\n\t\t\t\treturn response;\n\t\t\t}\n\n\t\t\tky.#decorateResponse(response);\n\n\t\t\t// If `onDownloadProgress` is passed, it uses the stream API internally\n\t\t\tif (ky.#options.onDownloadProgress) {\n\t\t\t\tif (typeof ky.#options.onDownloadProgress !== 'function') {\n\t\t\t\t\tthrow new TypeError('The `onDownloadProgress` option must be a function');\n\t\t\t\t}\n\n\t\t\t\tif (!supportsResponseStreams) {\n\t\t\t\t\tthrow new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n\t\t\t\t}\n\n\t\t\t\tconst progressResponse = response.clone();\n\t\t\t\tky.#cancelResponseBody(response);\n\t\t\t\treturn streamResponse(progressResponse, ky.#options.onDownloadProgress);\n\t\t\t}\n\n\t\t\treturn response;\n\t\t};\n\n\t\tconst result = (async () => {\n\t\t\ttry {\n\t\t\t\treturn await function_();\n\t\t\t} catch (error: unknown) {\n\t\t\t\t// Non-Error throws (e.g., thrown strings) pass through unchanged\n\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Errors thrown by beforeRetry hooks must propagate unchanged.\n\t\t\t\tif (ky.#beforeRetryHookErrors.has(error)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tlet processedError: Error = error;\n\t\t\t\tfor (const hook of ky.#options.hooks.beforeError) {\n\t\t\t\t\t// `request` is the current failing request. `options` intentionally remains the\n\t\t\t\t\t// stable normalized Ky options snapshot for the same reason as `HTTPError` above.\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tconst hookResult: unknown = await hook({\n\t\t\t\t\t\trequest: ky.request,\n\t\t\t\t\t\toptions: ky.#getNormalizedOptions(),\n\t\t\t\t\t\terror: processedError,\n\t\t\t\t\t\tretryCount: ky.#retryCount,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Only overwrite if the hook returns a valid Error instance.\n\t\t\t\t\tif (hookResult instanceof Error) {\n\t\t\t\t\t\tprocessedError = hookResult;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow processedError;\n\t\t\t} finally {\n\t\t\t\tconst originalRequest = ky.#originalRequest;\n\n\t\t\t\t// Ignore cancellation errors from already-locked or already-consumed streams.\n\t\t\t\tky.#cancelBody(originalRequest?.body ?? undefined);\n\t\t\t\t// Only cancel the current request body if it's distinct from the original (i.e. it was cloned for retries).\n\t\t\t\tif (ky.request !== originalRequest) {\n\t\t\t\t\tky.#cancelBody(ky.request.body ?? undefined);\n\t\t\t\t}\n\t\t\t}\n\t\t})() as ResponsePromise;\n\n\t\tfor (const [type, mimeType] of Object.entries(responseTypes) as ObjectEntries<typeof responseTypes>) {\n\t\t\t// Only expose `.bytes()` when the environment implements it.\n\t\t\tif (\n\t\t\t\ttype === 'bytes'\n\t\t\t\t&& typeof (globalThis.Response?.prototype as unknown as {bytes?: unknown})?.bytes !== 'function'\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult[type] = async (schema?: StandardSchemaV1) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\t\t\tky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n\n\t\t\t\tconst response = await result;\n\n\t\t\t\tif (type !== 'json') {\n\t\t\t\t\treturn response[type]();\n\t\t\t\t}\n\n\t\t\t\tconst text = await response.text();\n\t\t\t\tif (text === '') {\n\t\t\t\t\tif (schema !== undefined) {\n\t\t\t\t\t\treturn validateJsonWithSchema(undefined, schema);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn JSON.parse(text);\n\t\t\t\t}\n\n\t\t\t\tconst jsonValue = initHookOptions.parseJson\n\t\t\t\t\t? await initHookOptions.parseJson(text, {request: ky.#getResponseRequest(response), response})\n\t\t\t\t\t: JSON.parse(text);\n\n\t\t\t\treturn schema === undefined ? jsonValue : validateJsonWithSchema(jsonValue, schema);\n\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// eslint-disable-next-line unicorn/prevent-abbreviations\n\tstatic #normalizeSearchParams(searchParams: SearchParamsOption): SearchParamsOption {\n\t\t// Filter out undefined values from plain objects\n\t\tif (searchParams && typeof searchParams === 'object' && !Array.isArray(searchParams) && !(searchParams instanceof URLSearchParams)) {\n\t\t\treturn Object.fromEntries(Object.entries(searchParams).filter(([, value]) => value !== undefined));\n\t\t}\n\n\t\treturn searchParams;\n\t}\n\n\tpublic request: Request;\n\t#abortController?: AbortController;\n\t#retryCount = 0;\n\t// eslint-disable-next-line @typescript-eslint/prefer-readonly -- False positive: #input is reassigned on line 202\n\t#input: Input;\n\treadonly #options: InternalOptions;\n\t#originalRequest?: Request;\n\treadonly #userProvidedAbortSignal?: AbortSignal;\n\treadonly #beforeRetryHookErrors = new WeakSet<Error>();\n\t#cachedNormalizedOptions: NormalizedOptions | undefined;\n\treadonly #startTime: number | undefined;\n\t#returnedResponseFromBeforeRetryHook = false;\n\treadonly #responseRequests = new WeakMap<Response, Request>();\n\n\t// eslint-disable-next-line complexity\n\tconstructor(input: Input, options: Options = {}) {\n\t\tthis.#input = input;\n\t\tif (Object.hasOwn(options, 'prefixUrl')) {\n\t\t\tthrow new Error(prefixUrlRenamedErrorMessage);\n\t\t}\n\n\t\tthis.#options = {\n\t\t\t...options,\n\t\t\theaders: mergeHeaders((this.#input as Request).headers, options.headers),\n\t\t\thooks: mergeHooks({}, options.hooks),\n\t\t\tmethod: normalizeRequestMethod(options.method ?? (this.#input as Request).method ?? 'GET'),\n\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\t\tprefix: String(options.prefix || ''),\n\t\t\tretry: normalizeRetryOptions(options.retry),\n\t\t\tthrowHttpErrors: options.throwHttpErrors ?? true,\n\t\t\ttimeout: options.timeout ?? 10_000,\n\t\t\ttotalTimeout: options.totalTimeout ?? false,\n\t\t\tfetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n\t\t\tcontext: options.context ?? {},\n\t\t};\n\n\t\tif (typeof this.#input !== 'string' && !(this.#input instanceof URL || this.#input instanceof globalThis.Request)) {\n\t\t\tthrow new TypeError('`input` must be a string, URL, or Request');\n\t\t}\n\n\t\tif (typeof this.#input === 'string') {\n\t\t\tif (this.#options.prefix) {\n\t\t\t\tconst normalizedPrefix = this.#options.prefix.replace(/\\/+$/, '');\n\t\t\t\tconst normalizedInput = this.#input.replace(/^\\/+/, '');\n\t\t\t\tthis.#input = `${normalizedPrefix}/${normalizedInput}`;\n\t\t\t}\n\n\t\t\tif (this.#options.baseUrl) {\n\t\t\t\tlet absoluteInput: URL | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tabsoluteInput = new URL(this.#input);\n\t\t\t\t} catch {}\n\n\t\t\t\tif (!absoluteInput) {\n\t\t\t\t\tthis.#input = new URL(this.#input, (new Request(this.#options.baseUrl)).url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (supportsAbortController && supportsAbortSignal) {\n\t\t\tthis.#userProvidedAbortSignal = this.#options.signal ?? (this.#input as Request).signal;\n\t\t\tthis.#abortController = new globalThis.AbortController();\n\t\t\tthis.#options.signal = this.#createManagedSignal();\n\t\t}\n\n\t\tif (supportsRequestStreams) {\n\t\t\t// @ts-expect-error - Types are outdated.\n\t\t\tthis.#options.duplex = 'half';\n\t\t}\n\n\t\tif (this.#options.json !== undefined) {\n\t\t\tthis.#options.body = this.#options.stringifyJson?.(this.#options.json) ?? JSON.stringify(this.#options.json);\n\t\t\tthis.#options.headers.set('content-type', this.#options.headers.get('content-type') ?? 'application/json');\n\t\t}\n\n\t\t// To provide correct form boundary, Content-Type header should be deleted when creating Request from another Request with FormData/URLSearchParams body\n\t\t// Only delete if user didn't explicitly provide a custom content-type\n\t\tconst userProvidedContentType = options.headers && new globalThis.Headers(options.headers as HeadersInit).has('content-type');\n\t\tif (\n\t\t\tthis.#input instanceof globalThis.Request\n\t\t\t&& ((supportsFormData && this.#options.body instanceof globalThis.FormData) || this.#options.body instanceof URLSearchParams)\n\t\t\t&& !userProvidedContentType\n\t\t) {\n\t\t\tthis.#options.headers.delete('content-type');\n\t\t}\n\n\t\tthis.request = new globalThis.Request(this.#input, this.#options);\n\n\t\tif (hasSearchParameters(this.#options.searchParams)) {\n\t\t\tconst url = new URL(this.request.url);\n\t\t\tconst deleted = (this.#options.searchParams as any)?.[deletedParametersSymbol] as Set<string> | undefined;\n\n\t\t\tif (deleted) {\n\t\t\t\t// Remove keys from the input URL first so later searchParams entries can intentionally re-add them.\n\t\t\t\tfor (const key of deleted) {\n\t\t\t\t\turl.searchParams.delete(key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof this.#options.searchParams === 'string') {\n\t\t\t\tconst stringSearchParameters = this.#options.searchParams.replace(/^\\?/, '');\n\t\t\t\tif (stringSearchParameters !== '') {\n\t\t\t\t\turl.search = url.search ? `${url.search}&${stringSearchParameters}` : `?${stringSearchParameters}`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst optionsSearchParameters = new URLSearchParams(Ky.#normalizeSearchParams(this.#options.searchParams) as unknown as SearchParamsInit);\n\n\t\t\t\tfor (const [key, value] of optionsSearchParameters.entries()) {\n\t\t\t\t\turl.searchParams.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.#options.searchParams\n\t\t\t\t&& typeof this.#options.searchParams === 'object'\n\t\t\t\t&& !Array.isArray(this.#options.searchParams)\n\t\t\t\t&& !(this.#options.searchParams instanceof URLSearchParams)\n\t\t\t) {\n\t\t\t\tfor (const [key, value] of Object.entries(this.#options.searchParams)) {\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\turl.searchParams.delete(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Recreate request with the updated URL. We already have all options in this.#options, including duplex.\n\t\t\tthis.request = new globalThis.Request(url, this.#options as RequestInit);\n\t\t}\n\n\t\tif (this.#options.onUploadProgress && typeof this.#options.onUploadProgress !== 'function') {\n\t\t\tthrow new TypeError('The `onUploadProgress` option must be a function');\n\t\t}\n\n\t\t// `totalTimeout` starts when the request pipeline is created, so it also includes\n\t\t// Ky's internal scheduling and user hook time before the first fetch attempt.\n\t\tthis.#startTime = typeof this.#options.totalTimeout === 'number' ? this.#getCurrentTime() : undefined;\n\t}\n\n\t#calculateDelay(): number {\n\t\tconst retryDelay = this.#options.retry.delay(this.#retryCount + 1);\n\n\t\tlet jitteredDelay = retryDelay;\n\t\tif (this.#options.retry.jitter === true) {\n\t\t\tjitteredDelay = Math.random() * retryDelay;\n\t\t} else if (typeof this.#options.retry.jitter === 'function') {\n\t\t\tjitteredDelay = this.#options.retry.jitter(retryDelay);\n\n\t\t\tif (!Number.isFinite(jitteredDelay) || jitteredDelay < 0) {\n\t\t\t\tjitteredDelay = retryDelay;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this.#options.retry.backoffLimit, jitteredDelay);\n\t}\n\n\tasync #calculateRetryDelay(error: unknown) {\n\t\tif (this.#retryCount >= this.#options.retry.limit) {\n\t\t\tthrow error;\n\t\t}\n\n\t\t// Wrap non-Error throws to ensure consistent error handling\n\t\tconst errorObject = error instanceof Error ? error : new NonError(error);\n\n\t\t// Handle forced retry from afterResponse hook - skip method check and shouldRetry\n\t\tif (errorObject instanceof ForceRetryError) {\n\t\t\treturn errorObject.customDelay ?? this.#calculateDelay();\n\t\t}\n\n\t\t// Check if method is retriable for non-forced retries\n\t\tif (!this.#options.retry.methods.includes(this.request.method.toLowerCase())) {\n\t\t\tthrow error;\n\t\t}\n\n\t\t// User-provided shouldRetry function takes precedence over default checks (retryOnTimeout, status codes, etc.)\n\t\tif (this.#options.retry.shouldRetry !== undefined) {\n\t\t\tconst result = await this.#options.retry.shouldRetry({error: errorObject, retryCount: this.#retryCount + 1});\n\n\t\t\t// Strict boolean checking - only exact true/false are handled specially\n\t\t\tif (result === false) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (result === true) {\n\t\t\t\t// Force retry - skip all other validation and return delay\n\t\t\t\treturn this.#calculateDelay();\n\t\t\t}\n\n\t\t\t// If undefined or any other value, fall through to default behavior\n\t\t}\n\n\t\t// Default timeout behavior\n\t\tif (isTimeoutError(error)) {\n\t\t\tif (!this.#options.retry.retryOnTimeout) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn this.#calculateDelay();\n\t\t}\n\n\t\tif (isHTTPError(error)) {\n\t\t\tif (!this.#options.retry.statusCodes.includes(error.response.status)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst retryAfter = error.response.headers.get('Retry-After')\n\t\t\t\t?? error.response.headers.get('RateLimit-Reset')\n\t\t\t\t?? error.response.headers.get('X-RateLimit-Retry-After') // Symfony-based services\n\t\t\t\t?? error.response.headers.get('X-RateLimit-Reset') // GitHub\n\t\t\t\t?? error.response.headers.get('X-Rate-Limit-Reset'); // Twitter\n\t\t\tif (retryAfter && this.#options.retry.afterStatusCodes.includes(error.response.status)) {\n\t\t\t\tlet after = Number(retryAfter) * 1000;\n\t\t\t\tif (Number.isNaN(after)) {\n\t\t\t\t\tafter = Date.parse(retryAfter) - Date.now();\n\t\t\t\t} else if (after >= Date.parse('2024-01-01')) {\n\t\t\t\t\t// A large number is treated as a timestamp (fixed threshold protects against clock skew)\n\t\t\t\t\tafter -= Date.now();\n\t\t\t\t}\n\n\t\t\t\tif (!Number.isFinite(after)) {\n\t\t\t\t\treturn Math.min(this.#options.retry.maxRetryAfter, this.#calculateDelay());\n\t\t\t\t}\n\n\t\t\t\tafter = Math.max(0, after);\n\n\t\t\t\t// Don't apply jitter when server provides explicit retry timing\n\t\t\t\treturn Math.min(this.#options.retry.maxRetryAfter, after);\n\t\t\t}\n\n\t\t\tif (error.response.status === 413) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn this.#calculateDelay();\n\t\t}\n\n\t\t// Only retry known retriable error types. Unknown errors (e.g., programming bugs) are not retried.\n\t\tif (!isNetworkError(error)) {\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn this.#calculateDelay();\n\t}\n\n\t#decorateResponse(response: Response): Response {\n\t\tconst request = this.#getResponseRequest(response);\n\n\t\tif (this.#options.parseJson) {\n\t\t\tresponse.json = async () => {\n\t\t\t\tconst text = await response.text();\n\t\t\t\tif (text === '') {\n\t\t\t\t\treturn JSON.parse(text);\n\t\t\t\t}\n\n\t\t\t\treturn this.#options.parseJson!(text, {request, response});\n\t\t\t};\n\t\t}\n\n\t\treturn response;\n\t}\n\n\tasync #getResponseData(response: Response): Promise<unknown> {\n\t\t// Even with request timeouts disabled, bound error-body reads so retries and error propagation\n\t\t// cannot be stalled indefinitely by never-ending response streams.\n\t\tconst text = await this.#readResponseText(response, this.#getErrorDataTimeout());\n\t\tif (text === timedOutResponseData) {\n\t\t\tthis.#throwIfTotalTimeoutExhausted();\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!text) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!this.#isJsonContentType(response.headers.get('content-type') ?? '')) {\n\t\t\treturn text;\n\t\t}\n\n\t\tconst data = await this.#parseJson(text, response, this.#getErrorDataTimeout(), this.#getResponseRequest(response));\n\t\tif (data === timedOutResponseData) {\n\t\t\tthis.#throwIfTotalTimeoutExhausted();\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t#getErrorDataTimeout(): number {\n\t\tconst errorDataTimeout = this.#options.timeout === false ? 10_000 : this.#options.timeout;\n\t\tconst remainingTotal = this.#getRemainingTotalTimeout();\n\t\tif (remainingTotal === undefined) {\n\t\t\treturn errorDataTimeout;\n\t\t}\n\n\t\tif (remainingTotal <= 0) {\n\t\t\tthrow new TimeoutError(this.request);\n\t\t}\n\n\t\treturn Math.min(errorDataTimeout, remainingTotal);\n\t}\n\n\t#isJsonContentType(contentType: string): boolean {\n\t\t// Match JSON subtypes like `json`, `problem+json`, and `vnd.api+json`.\n\t\tconst mimeType = (contentType.split(';', 1)[0] ?? '').trim().toLowerCase();\n\t\treturn /\\/(?:.*[.+-])?json$/.test(mimeType);\n\t}\n\n\tasync #readResponseText(response: Response, timeoutMs: number): Promise<string | typeof timedOutResponseData | undefined> {\n\t\tconst {body} = response;\n\t\tif (!body) {\n\t\t\ttry {\n\t\t\t\treturn await response.text();\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\n\t\tlet reader: ReadableStreamDefaultReader<Uint8Array>;\n\t\ttry {\n\t\t\treader = body.getReader();\n\t\t} catch {\n\t\t\t// Another consumer already locked the stream.\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst decoder = createTextDecoder(response.headers.get('content-type') ?? '');\n\t\tconst chunks: string[] = [];\n\t\tlet totalBytes = 0;\n\n\t\tconst readAll = (async (): Promise<string | undefined> => {\n\t\t\ttry {\n\t\t\t\tfor (;;) {\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tconst {done, value} = await reader.read();\n\t\t\t\t\tif (done) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\ttotalBytes += value.byteLength;\n\t\t\t\t\tif (totalBytes > maxErrorResponseBodySize) {\n\t\t\t\t\t\tvoid reader.cancel().catch(() => undefined);\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tchunks.push(decoder.decode(value, {stream: true}));\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tchunks.push(decoder.decode());\n\t\t\treturn chunks.join('');\n\t\t})();\n\n\t\tconst timeoutPromise = new Promise<typeof timedOutResponseData>(resolve => {\n\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\tresolve(timedOutResponseData);\n\t\t\t}, timeoutMs);\n\t\t\tvoid readAll.finally(() => {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t});\n\t\t});\n\n\t\tconst result = await Promise.race([readAll, timeoutPromise]);\n\t\tif (result === timedOutResponseData) {\n\t\t\tvoid reader.cancel().catch(() => undefined);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tasync #parseJson(text: string, response: Response, timeoutMs: number, request: Request): Promise<unknown> {\n\t\tlet timeoutId: ReturnType<typeof setTimeout> | undefined;\n\t\ttry {\n\t\t\treturn await Promise.race([\n\t\t\t\tPromise.resolve().then(() => this.#options.parseJson\n\t\t\t\t\t? this.#options.parseJson(text, {request, response})\n\t\t\t\t\t: JSON.parse(text),\n\t\t\t\t),\n\t\t\t\tnew Promise<typeof timedOutResponseData>(resolve => {\n\t\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\t\tresolve(timedOutResponseData);\n\t\t\t\t\t}, timeoutMs);\n\t\t\t\t}),\n\t\t\t]);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t} finally {\n\t\t\tclearTimeout(timeoutId);\n\t\t}\n\t}\n\n\t#cancelBody(body: ReadableStream | undefined): void {\n\t\tif (!body) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ignore cancellation failures from already-locked or already-consumed streams.\n\t\tvoid body.cancel().catch(() => undefined);\n\t}\n\n\t#cancelResponseBody(response: Response): void {\n\t\t// Ignore cancellation failures from already-locked or already-consumed streams.\n\t\tthis.#cancelBody(response.body ?? undefined);\n\t}\n\n\t#createManagedSignal(): AbortSignal {\n\t\treturn this.#userProvidedAbortSignal\n\t\t\t? AbortSignal.any([this.#userProvidedAbortSignal, this.#abortController!.signal])\n\t\t\t: this.#abortController!.signal;\n\t}\n\n\t#throwIfTotalTimeoutExhausted(): void {\n\t\tconst remaining = this.#getRemainingTotalTimeout();\n\t\tif (remaining !== undefined && remaining <= 0) {\n\t\t\tthrow new TimeoutError(this.request);\n\t\t}\n\t}\n\n\tasync #runBeforeRequestHooks(): Promise<Response | undefined> {\n\t\tfor (const hook of this.#options.hooks.beforeRequest) {\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tconst result = await hook({\n\t\t\t\trequest: this.request,\n\t\t\t\toptions: this.#getNormalizedOptions(),\n\t\t\t\tretryCount: 0,\n\t\t\t});\n\n\t\t\tif (isRequestInstance(result)) {\n\t\t\t\tthis.#assignRequest(result);\n\t\t\t} else if (isResponseInstance(result)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tasync #runAfterResponseHooks(response: Response): Promise<Response> {\n\t\tconst responseRequest = this.#getResponseRequest(response);\n\n\t\tfor (const hook of this.#options.hooks.afterResponse) {\n\t\t\tconst hookResponse = this.#setResponseRequest(response.clone(), responseRequest);\n\t\t\tthis.#decorateResponse(hookResponse);\n\n\t\t\tlet modifiedResponse;\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tmodifiedResponse = await hook({\n\t\t\t\t\trequest: this.request,\n\t\t\t\t\toptions: this.#getNormalizedOptions(),\n\t\t\t\t\tresponse: hookResponse,\n\t\t\t\t\tretryCount: this.#retryCount,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\t// Cancel both responses to prevent memory leaks when hook throws\n\t\t\t\tif (hookResponse !== response) {\n\t\t\t\t\tthis.#cancelResponseBody(hookResponse);\n\t\t\t\t}\n\n\t\t\t\tthis.#cancelResponseBody(response);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (modifiedResponse instanceof RetryMarker) {\n\t\t\t\t// Cancel both the cloned response passed to the hook and the current response to prevent resource leaks (especially important in Deno/Bun).\n\t\t\t\t// Do not await cancellation since hooks can clone the response, leaving extra tee branches that keep cancel promises pending per the Streams spec.\n\t\t\t\tif (hookResponse !== response) {\n\t\t\t\t\tthis.#cancelResponseBody(hookResponse);\n\t\t\t\t}\n\n\t\t\t\tthis.#cancelResponseBody(response);\n\t\t\t\tthrow new ForceRetryError(modifiedResponse.options);\n\t\t\t}\n\n\t\t\tconst nextResponse = isResponseInstance(modifiedResponse)\n\t\t\t\t? this.#setResponseRequest(modifiedResponse, responseRequest)\n\t\t\t\t: response;\n\n\t\t\t// Cancel any response bodies we won't use to prevent memory leaks.\n\t\t\t// Uses fire-and-forget since hooks may have cloned the response, creating tee branches that block cancellation.\n\t\t\t// If the hook wrapped an existing body into a new Response, both Response objects can still point at the same stream.\n\t\t\tif (hookResponse !== response && hookResponse !== nextResponse && hookResponse.body !== nextResponse.body) {\n\t\t\t\tthis.#cancelResponseBody(hookResponse);\n\t\t\t}\n\n\t\t\tif (response !== nextResponse && response.body !== nextResponse.body) {\n\t\t\t\tthis.#cancelResponseBody(response);\n\t\t\t}\n\n\t\t\tresponse = nextResponse;\n\t\t}\n\n\t\treturn response;\n\t}\n\n\tasync #retry<T extends (...arguments_: any) => Promise<any>>(function_: T): Promise<ReturnType<T> | Response | void> {\n\t\ttry {\n\t\t\treturn await function_();\n\t\t} catch (error) {\n\t\t\treturn this.#retryFromError(error, function_);\n\t\t}\n\t}\n\n\tasync #retryFromError<T extends (...arguments_: any) => Promise<any>>(error: unknown, function_: T): Promise<ReturnType<T> | Response | void> {\n\t\tthis.#returnedResponseFromBeforeRetryHook = false;\n\n\t\tconst retryDelay = Math.min(await this.#calculateRetryDelay(error), maxSafeTimeout);\n\t\tconst delayOptions = {signal: this.#userProvidedAbortSignal};\n\n\t\tconst remainingTimeout = this.#getRemainingTotalTimeout();\n\t\tif (remainingTimeout !== undefined) {\n\t\t\tif (remainingTimeout <= 0) {\n\t\t\t\tthrow new TimeoutError(this.request);\n\t\t\t}\n\n\t\t\t// If waiting would consume all remaining budget, time out without starting another request.\n\t\t\tif (retryDelay >= remainingTimeout) {\n\t\t\t\tawait delay(remainingTimeout, delayOptions);\n\t\t\t\tthrow new TimeoutError(this.request);\n\t\t\t}\n\t\t}\n\n\t\t// Only use user-provided signal for delay, not our internal abortController\n\t\tawait delay(retryDelay, delayOptions);\n\n\t\tthis.#throwIfTotalTimeoutExhausted();\n\n\t\t// Apply custom request from forced retry before beforeRetry hooks\n\t\t// Ensure the custom request has the correct managed signal for timeouts and user aborts\n\t\tif (error instanceof ForceRetryError && error.customRequest) {\n\t\t\tconst customRequest = new globalThis.Request(error.customRequest, this.#options.signal ? {signal: this.#options.signal} : undefined);\n\t\t\t// Replacement Requests are authoritative by design. Do not rewrite headers here,\n\t\t\t// even for cross-origin retries. Callers using `ky.retry({request})` explicitly\n\t\t\t// opted into the exact Request they constructed.\n\t\t\tthis.#assignRequest(customRequest);\n\t\t}\n\n\t\tfor (const hook of this.#options.hooks.beforeRetry) {\n\t\t\tlet hookResult: Awaited<ReturnType<typeof hook>>;\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\thookResult = await hook({\n\t\t\t\t\trequest: this.request,\n\t\t\t\t\toptions: this.#getNormalizedOptions(),\n\t\t\t\t\terror: error as Error,\n\t\t\t\t\tretryCount: this.#retryCount + 1,\n\t\t\t\t});\n\t\t\t} catch (hookError) {\n\t\t\t\t// Preserve the original request error path (`throw error`) so beforeError hooks can still run.\n\t\t\t\tif (hookError instanceof Error && hookError !== error) {\n\t\t\t\t\tthis.#beforeRetryHookErrors.add(hookError);\n\t\t\t\t}\n\n\t\t\t\tthrow hookError;\n\t\t\t}\n\n\t\t\tif (isRequestInstance(hookResult)) {\n\t\t\t\t// Same contract as `ky.retry({request})`: a Request returned from `beforeRetry`\n\t\t\t\t// is used as-is rather than being sanitized or otherwise rewritten by Ky.\n\t\t\t\tthis.#assignRequest(hookResult);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (isResponseInstance(hookResult)) {\n\t\t\t\tthis.#returnedResponseFromBeforeRetryHook = true;\n\t\t\t\tthis.#retryCount++;\n\t\t\t\treturn hookResult;\n\t\t\t}\n\n\t\t\t// If `stop` is returned from the hook, the retry process is stopped\n\t\t\tif (hookResult === stop) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.#throwIfTotalTimeoutExhausted();\n\n\t\tthis.#retryCount++;\n\t\treturn this.#retry(function_);\n\t}\n\n\t#consumeReturnedResponseFromBeforeRetryHook(): boolean {\n\t\tconst value = this.#returnedResponseFromBeforeRetryHook;\n\t\tthis.#returnedResponseFromBeforeRetryHook = false;\n\t\treturn value;\n\t}\n\n\tasync #fetch(): Promise<Response> {\n\t\t// Reset abortController if it was aborted (happens on timeout retry)\n\t\tif (this.#abortController?.signal.aborted) {\n\t\t\tthis.#abortController = new globalThis.AbortController();\n\t\t\tthis.#options.signal = this.#createManagedSignal();\n\t\t\t// Recreate request with new signal\n\t\t\tthis.request = new globalThis.Request(this.request, {signal: this.#options.signal});\n\t\t}\n\n\t\tconst nonRequestOptions = findUnknownOptions(this.#options);\n\t\tconst retryRequest = this.#options.retry.limit > 0 ? this.request.clone() : undefined;\n\t\tconst request = this.#wrapRequestWithUploadProgress(this.request, this.#options.body ?? undefined);\n\n\t\t// Cloning is done here to prepare in advance for retries.\n\t\t// Skip cloning when retries are disabled - cloning a streaming body calls ReadableStream#tee()\n\t\t// which buffers the entire stream in memory, causing excessive memory usage for large uploads.\n\t\tthis.#originalRequest = request;\n\t\tif (retryRequest) {\n\t\t\tthis.request = retryRequest;\n\t\t}\n\n\t\ttry {\n\t\t\tconst remainingTotal = this.#getRemainingTotalTimeout();\n\t\t\tif (remainingTotal !== undefined && remainingTotal <= 0) {\n\t\t\t\tthrow new TimeoutError(this.request);\n\t\t\t}\n\n\t\t\tconst effectiveTimeout: number | undefined = this.#options.timeout === false\n\t\t\t\t? remainingTotal\n\t\t\t\t: (remainingTotal === undefined\n\t\t\t\t\t? this.#options.timeout\n\t\t\t\t\t: Math.min(this.#options.timeout, remainingTotal));\n\n\t\t\tconst response = effectiveTimeout === undefined\n\t\t\t\t? await this.#options.fetch(request, nonRequestOptions)\n\t\t\t\t: await timeout(request, nonRequestOptions, this.#abortController, {\n\t\t\t\t\ttimeout: effectiveTimeout,\n\t\t\t\t\tfetch: this.#options.fetch,\n\t\t\t\t});\n\n\t\t\treturn this.#setResponseRequest(response, request);\n\t\t} catch (error) {\n\t\t\tif (isRawNetworkError(error)) {\n\t\t\t\tthrow new NetworkError(this.request, {cause: error as Error});\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t#getRemainingTotalTimeout(): number | undefined {\n\t\tif (this.#startTime === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst elapsed = this.#getCurrentTime() - this.#startTime;\n\t\treturn Math.max(0, (this.#options.totalTimeout as number) - elapsed);\n\t}\n\n\t#getCurrentTime(): number {\n\t\treturn globalThis.performance?.now() ?? Date.now();\n\t}\n\n\t#getNormalizedOptions(): NormalizedOptions {\n\t\tif (!this.#cachedNormalizedOptions) {\n\t\t\t// Exclude Ky-specific options that are not part of `RequestInit`.\n\t\t\tconst {\n\t\t\t\thooks,\n\t\t\t\tjson,\n\t\t\t\tparseJson,\n\t\t\t\tstringifyJson,\n\t\t\t\tsearchParams,\n\t\t\t\ttimeout,\n\t\t\t\ttotalTimeout,\n\t\t\t\tthrowHttpErrors,\n\t\t\t\tfetch,\n\t\t\t\t...normalizedOptions\n\t\t\t} = this.#options;\n\n\t\t\tthis.#cachedNormalizedOptions = Object.freeze(normalizedOptions) as NormalizedOptions;\n\t\t}\n\n\t\treturn this.#cachedNormalizedOptions;\n\t}\n\n\t#assignRequest(request: Request): void {\n\t\tthis.#cachedNormalizedOptions = undefined;\n\t\tthis.request = request;\n\t}\n\n\t#getResponseRequest(response: Response): Request {\n\t\treturn this.#responseRequests.get(response) ?? this.request;\n\t}\n\n\t#setResponseRequest(response: Response, request: Request): Response {\n\t\tthis.#responseRequests.set(response, request);\n\t\treturn response;\n\t}\n\n\t#wrapRequestWithUploadProgress(request: Request, originalBody?: BodyInit): Request {\n\t\tif (!this.#options.onUploadProgress || !request.body || !supportsRequestStreams) {\n\t\t\treturn request;\n\t\t}\n\n\t\treturn streamRequest(request, this.#options.onUploadProgress, originalBody ?? this.#options.body ?? undefined);\n\t}\n}\n", "/*! MIT License © Sindre Sorhus */\n\nimport {Ky} from './core/Ky.js';\nimport {requestMethods, stop, retry} from './core/constants.js';\nimport type {KyInstance} from './types/ky.js';\nimport type {Input, Options} from './types/options.js';\nimport {validateAndMerge} from './utils/merge.js';\nimport {type Mutable} from './utils/types.js';\n\nconst createInstance = (defaults?: Partial<Options>): KyInstance => {\n\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\tconst ky: Partial<Mutable<KyInstance>> = (input: Input, options?: Options) => Ky.create(input, validateAndMerge(defaults, options));\n\n\tfor (const method of requestMethods) {\n\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\tky[method] = (input: Input, options?: Options) => Ky.create(input, validateAndMerge(defaults, options, {method}));\n\t}\n\n\tky.create = (newDefaults?: Partial<Options>) => createInstance(validateAndMerge(newDefaults));\n\tky.extend = (newDefaults?: Partial<Options> | ((parentDefaults: Partial<Options>) => Partial<Options>)) => {\n\t\tif (typeof newDefaults === 'function') {\n\t\t\tnewDefaults = newDefaults(defaults ?? {});\n\t\t}\n\n\t\treturn createInstance(validateAndMerge(defaults, newDefaults));\n\t};\n\n\tky.stop = stop;\n\tky.retry = retry;\n\n\treturn ky as KyInstance;\n};\n\nconst ky = createInstance();\n\nexport default ky;\n\nexport type {KyInstance} from './types/ky.js';\n\nexport type {\n\tInput,\n\tOptions,\n\tNormalizedOptions,\n\tRetryOptions,\n\tShouldRetryState,\n\tSearchParamsOption,\n\tProgress,\n} from './types/options.js';\n\nexport type {\n\tHooks,\n\tInitHook,\n\tBeforeRequestHook,\n\tBeforeRequestState,\n\tBeforeRetryHook,\n\tBeforeRetryState,\n\tBeforeErrorHook,\n\tBeforeErrorState,\n\tAfterResponseHook,\n\tAfterResponseState,\n} from './types/hooks.js';\n\nexport type {ResponsePromise} from './types/ResponsePromise.js';\nexport type {\n\tStandardSchemaV1,\n\tStandardSchemaV1InferOutput,\n\tStandardSchemaV1Issue,\n} from './types/standard-schema.js';\nexport type {KyRequest} from './types/request.js';\nexport type {KyResponse} from './types/response.js';\nexport {KyError} from './errors/KyError.js';\nexport {HTTPError} from './errors/HTTPError.js';\nexport {SchemaValidationError} from './errors/SchemaValidationError.js';\nexport {NetworkError} from './errors/NetworkError.js';\nexport {TimeoutError} from './errors/TimeoutError.js';\nexport {ForceRetryError} from './errors/ForceRetryError.js';\nexport {\n\tisKyError,\n\tisHTTPError,\n\tisNetworkError,\n\tisTimeoutError,\n\tisForceRetryError,\n} from './utils/type-guards.js';\nexport {replaceOption} from './utils/merge.js';\n\n// Intentionally not exporting this for now as it's just an implementation detail and we don't want to commit to a certain API yet at least.\n// export {NonError} from './errors/NonError.js';\n", "import ky from 'ky';\r\n\r\nimport { app } from './globals';\r\nimport type {\r\n AccountSettings,\r\n Bookmark,\r\n BulkEditRequest,\r\n BulkEditResponse,\r\n Note,\r\n NoteBulkEditRequest,\r\n TagCloud,\r\n TagCloudMode,\r\n TagSuggestionRequest,\r\n TagSuggestionResponse,\r\n} from './types';\r\n\r\nexport type StarAction = 'star' | 'unstar';\r\n\r\nfunction withCsrf(headers?: HeadersInit): HeadersInit {\r\n const a = app();\r\n const h = new Headers(headers);\r\n h.set(a.csrfHeaderName, a.csrfToken);\r\n return h;\r\n}\r\n\r\n// Paths below are relative to the document's `<base href>` (set by the server to the\r\n// approot), so they resolve correctly regardless of the current page's URL depth or\r\n// whether the app is served from a subpath.\r\nasync function request(\r\n method: string,\r\n path: string,\r\n opts: { headers?: HeadersInit; body?: BodyInit | null; timeout?: number | false } = {},\r\n) {\r\n const res = await ky(path, {\r\n method,\r\n headers: withCsrf(opts.headers),\r\n body: opts.body ?? undefined,\r\n throwHttpErrors: false,\r\n timeout: opts.timeout,\r\n });\r\n return res;\r\n}\r\n\r\nexport async function toggleStar(\r\n bid: number,\r\n action: StarAction,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('PATCH', `api/bm/${bid.toString()}/${action}`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function markRead(\r\n bid: number,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('PATCH', `api/bm/${bid.toString()}/read`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function destroy(\r\n bid: number,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('DELETE', `api/bm/${bid.toString()}`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function bulkEdit(req: BulkEditRequest): Promise<BulkEditResponse> {\r\n return bulkEditPost('api/bm/bulkEdit', req);\r\n}\r\n\r\nexport async function noteBulkEdit(req: NoteBulkEditRequest): Promise<BulkEditResponse> {\r\n return bulkEditPost('api/note/bulkEdit', req);\r\n}\r\n\r\nasync function bulkEditPost(\r\n path: string,\r\n req: BulkEditRequest | NoteBulkEditRequest,\r\n): Promise<BulkEditResponse> {\r\n const res = await request('POST', path, {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(req),\r\n timeout: 300_000,\r\n });\r\n const contentType = res.headers.get('content-type') ?? '';\r\n let bodyText: string | undefined;\r\n let data: { editedCount: number } | undefined;\r\n if (contentType.includes('application/json')) {\r\n try {\r\n data = await res.json();\r\n } catch {\r\n data = undefined;\r\n }\r\n } else {\r\n bodyText = await res.text();\r\n }\r\n return { ok: res.ok, status: res.status, bodyText, data };\r\n}\r\n\r\nexport async function archiveBookmark(\r\n bid: number,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('POST', `api/bm/${bid.toString()}/archive`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function editBookmark(\r\n bm: Bookmark,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('POST', 'api/add', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(bm),\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function editNote(\r\n note: Note,\r\n): Promise<{ ok: boolean; status: number; bodyText: string; note: Note | null }> {\r\n const res = await request('POST', 'api/note/add', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(note),\r\n });\r\n if (!res.ok) return { ok: false, status: res.status, bodyText: await res.text(), note: null };\r\n const updated = await res.json<Note>();\r\n return { ok: true, status: res.status, bodyText: '', note: updated };\r\n}\r\n\r\nexport async function lookupTitle(bm: Bookmark): Promise<string | null> {\r\n const res = await request('POST', 'api/lookuptitle', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(bm),\r\n });\r\n if (res.status === 200) return await res.text();\r\n return null;\r\n}\r\n\r\nexport async function getTagCloud(mode: TagCloudMode): Promise<TagCloud | null> {\r\n const tagCloudR = app().tagCloudR;\r\n if (!tagCloudR) return null;\r\n const res = await request('POST', tagCloudR, {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(mode),\r\n });\r\n if (!res.ok) return null;\r\n try {\r\n return await res.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function updateTagCloudMode(mode: TagCloudMode): Promise<void> {\r\n await request('POST', 'api/tagcloudmode', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(mode),\r\n });\r\n}\r\n\r\nexport async function fetchTagSuggestions(\r\n data: TagSuggestionRequest,\r\n): Promise<TagSuggestionResponse | null> {\r\n const res = await request('POST', 'api/tagSuggestions', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(data),\r\n });\r\n if (!res.ok) return null;\r\n try {\r\n return await res.json<TagSuggestionResponse>();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function destroyNote(\r\n nid: number,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('DELETE', `api/note/${nid.toString()}`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function editAccountSettings(\r\n us: AccountSettings,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('POST', 'api/accountSettings', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(us),\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function resetApiKey(): Promise<{\r\n ok: boolean;\r\n status: number;\r\n apiKey?: string;\r\n bodyText?: string;\r\n}> {\r\n const res = await request('POST', 'Settings/apikey');\r\n if (res.ok) {\r\n try {\r\n const data = await res.json<{ apiKey: string }>();\r\n return { ok: true, status: res.status, apiKey: data.apiKey };\r\n } catch {\r\n return { ok: true, status: res.status };\r\n }\r\n }\r\n return { ok: false, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function revokeApiKey(): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('DELETE', 'Settings/apikey');\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\n// Paths relative to the document's `<base href>` (the approot). Exports are plain\r\n// authenticated GET downloads; anchors point at these directly.\r\nexport const exportPaths = {\r\n bookmarksJson: 'Settings/export/bookmarks/json',\r\n bookmarksHtml: 'Settings/export/bookmarks/netscape',\r\n notesJson: 'Settings/export/notes/json',\r\n} as const;\r\n\r\nexport type ImportResult = {\r\n ok: boolean;\r\n status: number;\r\n imported?: number;\r\n bodyText?: string;\r\n};\r\n\r\nasync function importFile(path: string, contentType: string, body: string): Promise<ImportResult> {\r\n const res = await request('POST', path, {\r\n headers: { 'content-type': contentType },\r\n body,\r\n timeout: 300_000,\r\n });\r\n if (res.ok) {\r\n try {\r\n const data = await res.json<{ imported: number }>();\r\n return { ok: true, status: res.status, imported: data.imported };\r\n } catch {\r\n return { ok: true, status: res.status };\r\n }\r\n }\r\n return { ok: false, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport const importBookmarks = (text: string): Promise<ImportResult> =>\r\n importFile('Settings/import/bookmarks/json', 'application/json', text);\r\n\r\nexport const importFirefox = (text: string): Promise<ImportResult> =>\r\n importFile('Settings/import/bookmarks/firefox', 'application/json', text);\r\n\r\nexport const importNetscape = (text: string): Promise<ImportResult> =>\r\n importFile('Settings/import/bookmarks/netscape', 'text/plain', text);\r\n\r\nexport const importNotes = (jsonArray: string): Promise<ImportResult> =>\r\n importFile('Settings/import/notes/json', 'application/json', jsonArray);\r\n\r\nexport async function logout(): Promise<void> {\r\n const a = app();\r\n await request('POST', a.authRlogoutR);\r\n window.location.reload();\r\n}\r\n", "import { TimeoutError } from 'ky';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport * as api from '../api';\r\nimport { editAccountSettings } from '../api';\r\nimport type { AccountSettings } from '../types';\r\nimport { apiErrorMsg } from '../util';\r\n\r\ntype SettingsTab = 'account' | 'importexport' | 'api';\r\n\r\n// Resolved against the document's `<base href>` (the approot), so the tab URLs keep\r\n// the subpath when the app is served from a non-root APPROOT.\r\nconst tabPaths: Record<SettingsTab, string> = {\r\n account: 'Settings',\r\n importexport: 'Settings/importexport',\r\n api: 'Settings/api',\r\n};\r\n\r\nfunction tabHref(value: SettingsTab): string {\r\n return new URL(tabPaths[value], document.baseURI).pathname;\r\n}\r\n\r\nfunction tabFromLocation(): SettingsTab {\r\n const pathname = window.location.pathname;\r\n if (pathname === tabHref('importexport')) return 'importexport';\r\n if (pathname === tabHref('api')) return 'api';\r\n return 'account';\r\n}\r\n\r\n/** Displays and edits the current user's account settings, with a sub-nav to import/export. */\r\nexport function AccountSettingsView({ initial }: { initial: AccountSettings }) {\r\n const { t } = useTranslation();\r\n const [tab, setTab] = React.useState<SettingsTab>(tabFromLocation);\r\n\r\n React.useEffect(() => {\r\n const onPopState = () => {\r\n setTab(tabFromLocation());\r\n };\r\n window.addEventListener('popstate', onPopState);\r\n return () => {\r\n window.removeEventListener('popstate', onPopState);\r\n };\r\n }, []);\r\n\r\n function tabLink(value: SettingsTab, label: string) {\r\n return (\r\n <a\r\n href={tabHref(value)}\r\n className={`dib link${tab === value ? ' nav-active' : ' silver hover-alt'}`}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n if (window.location.pathname !== tabHref(value)) {\r\n window.history.pushState(null, '', tabHref(value));\r\n }\r\n setTab(value);\r\n }}\r\n >\r\n {label}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <div>\r\n <div className=\"mb3\">\r\n {tabLink('account', t('settings.tabAccount'))}\r\n {' \u2027 '}\r\n {tabLink('importexport', t('settings.tabImportExport'))}\r\n {' \u2027 '}\r\n {tabLink('api', t('settings.tabApi'))}\r\n </div>\r\n\r\n <div className={tab === 'account' ? '' : 'dn'}>\r\n <SettingsView initial={initial} />\r\n </div>\r\n <div className={tab === 'importexport' ? '' : 'dn'}>\r\n <ImportExportView />\r\n </div>\r\n <div className={tab === 'api' ? '' : 'dn'}>\r\n <ApiKeyView initialHasApiKey={initial.hasApiKey} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction SettingsView({ initial }: { initial: AccountSettings }) {\r\n const { t } = useTranslation();\r\n const [us, setUs] = React.useState<AccountSettings>(initial);\r\n const [apiError, setApiError] = React.useState<string | null>(null);\r\n const archiveDisabled = !us.archiveBackendEnabled;\r\n const archiveDisabledTitle = archiveDisabled ? t('settings.archivingDisabled') : undefined;\r\n\r\n async function update(next: AccountSettings): Promise<boolean> {\r\n try {\r\n const res = await editAccountSettings(next);\r\n if (!res.ok) {\r\n setApiError(apiErrorMsg(t, res.status, res.bodyText));\r\n return false;\r\n }\r\n setApiError(null);\r\n setUs(next);\r\n const lockIcon = document.getElementById('privacy-lock-icon');\r\n if (lockIcon) lockIcon.style.display = next.privacyLock ? '' : 'none';\r\n return true;\r\n } catch (err) {\r\n setApiError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"settings-form\">\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.groupLanguage')}</div>\r\n <div className=\"flex items-center mb3\">\r\n <select\r\n id=\"language\"\r\n name=\"language\"\r\n className=\"pointer\"\r\n aria-label={t('settings.language')}\r\n value={us.language ?? ''}\r\n onChange={(e) => {\r\n const next = { ...us, language: e.target.value === '' ? null : e.target.value };\r\n void update(next).then((ok) => {\r\n if (ok) window.location.reload();\r\n });\r\n }}\r\n >\r\n <option value=\"\">{t('settings.serverDefault')}</option>\r\n <option value=\"en\">English</option>\r\n <option value=\"de\">Deutsch</option>\r\n <option value=\"es\">Espa\u00F1ol</option>\r\n <option value=\"fr\">Fran\u00E7ais</option>\r\n <option value=\"it\">Italiano</option>\r\n <option value=\"ja\">\u65E5\u672C\u8A9E</option>\r\n <option value=\"ko\">\uD55C\uAD6D\uC5B4</option>\r\n <option value=\"pl\">Polski</option>\r\n <option value=\"pt-BR\">Portugu\u00EAs (Brasil)</option>\r\n <option value=\"ru\">\u0420\u0443\u0441\u0441\u043A\u0438\u0439</option>\r\n <option value=\"tr\">T\u00FCrk\u00E7e</option>\r\n <option value=\"uk\">\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430</option>\r\n <option value=\"zh-Hans\">\u7B80\u4F53\u4E2D\u6587</option>\r\n <option value=\"zh-Hant\">\u7E41\u9AD4\u4E2D\u6587</option>\r\n </select>\r\n </div>\r\n\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.groupGeneral')}</div>\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"suggestTags\"\r\n name=\"suggestTags\"\r\n checked={us.suggestTags}\r\n onChange={(e) => void update({ ...us, suggestTags: e.target.checked })}\r\n />\r\n <label htmlFor=\"suggestTags\" className=\"lh-copy\">\r\n {t('settings.suggestTags')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"suggestTagsUseReturnKey\"\r\n name=\"suggestTagsUseReturnKey\"\r\n checked={us.suggestTagsUseReturnKey}\r\n onChange={(e) => void update({ ...us, suggestTagsUseReturnKey: e.target.checked })}\r\n />\r\n <label htmlFor=\"suggestTagsUseReturnKey\" className=\"lh-copy\">\r\n {t('settings.suggestTagsUseReturnKey')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"flex items-center mb3\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"previewNotes\"\r\n name=\"previewNotes\"\r\n checked={us.previewNotes}\r\n onChange={(e) => void update({ ...us, previewNotes: e.target.checked })}\r\n />\r\n <label htmlFor=\"previewNotes\" className=\"lh-copy\">\r\n {t('settings.previewNotes')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.groupArchive')}</div>\r\n <div\r\n className={`flex items-center mb3${archiveDisabled ? ' o-50' : ''}`}\r\n title={archiveDisabledTitle}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n className={`mr2${archiveDisabled ? '' : ' pointer'}`}\r\n id=\"archiveDefault\"\r\n name=\"archiveDefault\"\r\n checked={us.archiveDefault}\r\n disabled={archiveDisabled}\r\n title={archiveDisabledTitle}\r\n onChange={(e) => void update({ ...us, archiveDefault: e.target.checked })}\r\n />\r\n <label\r\n htmlFor=\"archiveDefault\"\r\n className={`lh-copy${archiveDisabled ? ' thm-text-tertiary' : ''}`}\r\n title={archiveDisabledTitle}\r\n >\r\n {t('settings.archiveDefault')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.groupPrivacy')}</div>\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"privateDefault\"\r\n name=\"privateDefault\"\r\n checked={us.privateDefault}\r\n onChange={(e) => void update({ ...us, privateDefault: e.target.checked })}\r\n />\r\n <label htmlFor=\"privateDefault\" className=\"lh-copy\">\r\n {t('settings.privateDefault')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"publicTagCloud\"\r\n name=\"publicTagCloud\"\r\n checked={us.publicTagCloud}\r\n onChange={(e) => void update({ ...us, publicTagCloud: e.target.checked })}\r\n />\r\n <label htmlFor=\"publicTagCloud\" className=\"lh-copy\">\r\n {t('settings.publicTagCloud')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"privacyLock\"\r\n name=\"privacyLock\"\r\n checked={us.privacyLock}\r\n onChange={(e) => void update({ ...us, privacyLock: e.target.checked })}\r\n />\r\n <label htmlFor=\"privacyLock\" className=\"lh-copy\">\r\n {t('settings.privacyLock')}\r\n </label>\r\n </div>\r\n\r\n {apiError ? <div className=\"thm-text-error f7 mt2\">{apiError}</div> : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction ImportExportView() {\r\n const { t } = useTranslation();\r\n const [status, setStatus] = React.useState<string | null>(null);\r\n const [error, setError] = React.useState<string | null>(null);\r\n const [busy, setBusy] = React.useState(false);\r\n\r\n async function runImport(\r\n files: FileList | null,\r\n prepare: (texts: string[]) => string,\r\n importFn: (body: string) => Promise<api.ImportResult>,\r\n ): Promise<void> {\r\n if (!files || files.length === 0) return;\r\n setError(null);\r\n setStatus(t('settings.importing'));\r\n setBusy(true);\r\n try {\r\n const texts = await Promise.all(Array.from(files).map((f) => f.text()));\r\n let body: string;\r\n try {\r\n body = prepare(texts);\r\n } catch {\r\n setStatus(null);\r\n setError(t('settings.importParseError'));\r\n return;\r\n }\r\n const res = await importFn(body);\r\n if (res.ok) {\r\n setStatus(t('settings.imported', { count: res.imported ?? 0 }));\r\n } else {\r\n setStatus(null);\r\n setError(t('error.error', { status: res.status }));\r\n }\r\n } catch (err) {\r\n setStatus(null);\r\n setError(err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'));\r\n } finally {\r\n setBusy(false);\r\n }\r\n }\r\n\r\n const first = (texts: string[]) => texts[0] ?? '';\r\n const combineNotes = (texts: string[]) => {\r\n const notes: unknown[] = [];\r\n for (const txt of texts) {\r\n const parsed: unknown = JSON.parse(txt);\r\n if (Array.isArray(parsed)) notes.push(...(parsed as unknown[]));\r\n else notes.push(parsed);\r\n }\r\n return JSON.stringify(notes);\r\n };\r\n\r\n function importRow(\r\n label: string,\r\n accept: string,\r\n prepare: (texts: string[]) => string,\r\n importFn: (body: string) => Promise<api.ImportResult>,\r\n multiple = false,\r\n ) {\r\n return (\r\n <div className=\"mb2\">\r\n <div className=\"mb1\">{label}</div>\r\n <input\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n disabled={busy}\r\n className=\"f7 pointer\"\r\n onChange={(e) => {\r\n void runImport(e.target.files, prepare, importFn);\r\n e.target.value = '';\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"settings-form\">\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.export')}</div>\r\n <div className=\"mb1\">\r\n <a className=\"link\" href={api.exportPaths.bookmarksJson} download>\r\n {t('settings.exportBookmarksJson')}\r\n </a>\r\n </div>\r\n <div className=\"mb1\">\r\n <a className=\"link\" href={api.exportPaths.bookmarksHtml} download>\r\n {t('settings.exportBookmarksHtml')}\r\n </a>\r\n </div>\r\n <div className=\"mb3\">\r\n <a className=\"link\" href={api.exportPaths.notesJson} download>\r\n {t('settings.exportNotesJson')}\r\n </a>\r\n </div>\r\n\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.import')}</div>\r\n {importRow(t('settings.importBookmarksJson'), '.json', first, api.importBookmarks)}\r\n {importRow(t('settings.importFirefoxJson'), '.json', first, api.importFirefox)}\r\n {importRow(t('settings.importNetscapeHtml'), '.html,.htm', first, api.importNetscape)}\r\n {importRow(t('settings.importNotesJson'), '.json', combineNotes, api.importNotes, true)}\r\n\r\n {status ? <div className=\"f7 mt2\">{status}</div> : null}\r\n {error ? <div className=\"thm-text-error f7 mt2\">{error}</div> : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction ApiKeyView({ initialHasApiKey }: { initialHasApiKey: boolean }) {\r\n const { t } = useTranslation();\r\n const [hasApiKey, setHasApiKey] = React.useState(initialHasApiKey);\r\n const [newKey, setNewKey] = React.useState<string | null>(null);\r\n const [copied, setCopied] = React.useState(false);\r\n const [error, setError] = React.useState<string | null>(null);\r\n const [busy, setBusy] = React.useState(false);\r\n\r\n async function reset(): Promise<void> {\r\n setError(null);\r\n setCopied(false);\r\n setBusy(true);\r\n try {\r\n const res = await api.resetApiKey();\r\n if (res.ok && res.apiKey) {\r\n setNewKey(res.apiKey);\r\n setHasApiKey(true);\r\n } else {\r\n setError(apiErrorMsg(t, res.status, res.bodyText ?? ''));\r\n }\r\n } catch (err) {\r\n setError(err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'));\r\n } finally {\r\n setBusy(false);\r\n }\r\n }\r\n\r\n async function revoke(): Promise<void> {\r\n setError(null);\r\n setBusy(true);\r\n try {\r\n const res = await api.revokeApiKey();\r\n if (res.ok) {\r\n setHasApiKey(false);\r\n setNewKey(null);\r\n } else {\r\n setError(apiErrorMsg(t, res.status, res.bodyText));\r\n }\r\n } catch (err) {\r\n setError(err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'));\r\n } finally {\r\n setBusy(false);\r\n }\r\n }\r\n\r\n async function copyKey(): Promise<void> {\r\n if (!newKey) return;\r\n try {\r\n await navigator.clipboard.writeText(newKey);\r\n setCopied(true);\r\n } catch {\r\n setCopied(false);\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"settings-form\">\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.apiKeyTitle')}</div>\r\n <div className=\"mb3 lh-copy\">\r\n {hasApiKey ? t('settings.apiKeyHasKey') : t('settings.apiKeyNoKey')}\r\n </div>\r\n\r\n {newKey ? (\r\n <div className=\"mb3\">\r\n <div className=\"mb1 lh-copy\">{t('settings.apiKeyShownOnce')}</div>\r\n <div className=\"flex items-center\">\r\n <input\r\n type=\"text\"\r\n readOnly\r\n className=\"code f7 pa2 ba thm-border-primary bg-transparent thm-text-strong w-100 mw6\"\r\n value={newKey}\r\n onFocus={(e) => {\r\n e.target.select();\r\n }}\r\n />\r\n <a\r\n href=\"#\"\r\n className=\"link ml2\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n void copyKey();\r\n }}\r\n >\r\n {copied ? t('settings.apiKeyCopied') : t('settings.apiKeyCopy')}\r\n </a>\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n <div className=\"flex items-center\">\r\n <button\r\n type=\"button\"\r\n disabled={busy}\r\n className=\"ph3 pv2 input-reset thm-text-strong ba thm-border-primary bg-transparent pointer f6 dib dim\"\r\n onClick={() => void reset()}\r\n >\r\n {hasApiKey ? t('settings.apiKeyReset') : t('settings.apiKeyCreate')}\r\n </button>\r\n {hasApiKey ? (\r\n <button\r\n type=\"button\"\r\n disabled={busy}\r\n className=\"ml3 input-reset bn bg-transparent thm-text-error pointer f6 dib dim\"\r\n onClick={() => void revoke()}\r\n >\r\n {t('settings.apiKeyRevoke')}\r\n </button>\r\n ) : null}\r\n </div>\r\n\r\n {hasApiKey ? (\r\n <div className=\"f7 thm-text-tertiary mt2 lh-copy\">{t('settings.apiKeyResetHint')}</div>\r\n ) : null}\r\n\r\n {error ? <div className=\"thm-text-error f7 mt2\">{error}</div> : null}\r\n </div>\r\n );\r\n}\r\n", "import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { destroy, editBookmark, lookupTitle } from '../api';\r\nimport { app, closeWindow, fromNow, shdatetime } from '../globals';\r\nimport { useTagSuggestions } from '../hooks/useTagSuggestions';\r\nimport type { Bookmark } from '../types';\r\nimport { curQuerystring, lookupQueryStringValue, normalizeTags } from '../util';\r\nimport { TagSuggestionsDropdown } from './TagSuggestionsDropdown';\r\n\r\n/** Form for adding or editing a single bookmark, used in the popup window. */\r\nexport function AddForm({ initial }: { initial: Bookmark }) {\r\n const { t } = useTranslation();\r\n const a = app();\r\n const [bm, setBm] = React.useState<Bookmark>(initial);\r\n const [editBm, setEditBm] = React.useState<Bookmark>(initial);\r\n const [deleteAsk, setDeleteAsk] = React.useState(false);\r\n const [loading, setLoading] = React.useState(false);\r\n const [destroyed, setDestroyed] = React.useState(false);\r\n const [apiError, setApiError] = React.useState<string | null>(null);\r\n const suggestEnabled = a.dat.suggestTags === true;\r\n const suggestUseReturnKey = a.dat.suggestTagsUseReturnKey !== false;\r\n const fromNowVal = React.useMemo(() => fromNow(a.lang, bm.time), [a.lang, bm.time]);\r\n\r\n const {\r\n tagInputRef,\r\n suggestionState,\r\n closeSuggestions,\r\n onTagsChange,\r\n onTagsKeyDown,\r\n onTagsSelect,\r\n onSuggestionHover,\r\n onSuggestionPick,\r\n } = useTagSuggestions({\r\n enabled: suggestEnabled,\r\n useReturnKey: suggestUseReturnKey,\r\n tags: editBm.tags,\r\n maxSuggestions: 4,\r\n onTagsUpdate: (tags) => {\r\n setEditBm((x) => ({ ...x, tags }));\r\n },\r\n });\r\n\r\n async function onFetchTitle() {\r\n setLoading(true);\r\n try {\r\n const title = await lookupTitle(editBm);\r\n if (title != null) setEditBm((x) => ({ ...x, title }));\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function onDestroy() {\r\n const res = await destroy(bm.bid);\r\n if (!res.ok) {\r\n setApiError(res.bodyText);\r\n return;\r\n }\r\n setDestroyed(true);\r\n }\r\n\r\n const onSubmit = async (e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>): Promise<void> => {\r\n e.preventDefault();\r\n setApiError(null);\r\n const editBm2 = { ...editBm, tags: normalizeTags(editBm.tags) };\r\n\r\n const res = await editBookmark(editBm2);\r\n if (res.ok && res.status >= 200 && res.status < 300) {\r\n setBm(editBm2);\r\n\r\n const qs = curQuerystring();\r\n const next = lookupQueryStringValue(qs, 'next');\r\n const ref = document.referrer;\r\n const org = window.location.origin;\r\n\r\n if (next === 'closeWindow') closeWindow(window);\r\n else if (next === 'back') {\r\n if (ref.startsWith(org)) window.location.href = ref;\r\n else window.location.href = org;\r\n } else {\r\n closeWindow(window);\r\n }\r\n } else {\r\n setApiError(res.bodyText);\r\n }\r\n };\r\n\r\n if (destroyed) return <p className=\"thm-text-killed\">{t('addForm.killed')}</p>;\r\n\r\n return (\r\n <form\r\n onSubmit={(e) => {\r\n void onSubmit(e);\r\n }}\r\n >\r\n <table className=\"w-100\">\r\n <tbody>\r\n <tr>\r\n <td className=\"w1\" />\r\n <td>\r\n {bm.bid > 0 ? (\r\n <div className=\"alert\">\r\n {t('addForm.previouslySaved')} \r\n <span\r\n className=\"link f7 dib thm-text-tertiary thm-hover-link-color pr3\"\r\n data-time={bm.time}\r\n title={shdatetime(a.lang, bm.time)}\r\n >\r\n {fromNowVal}\r\n </span>\r\n <div className=\"edit_links dib ml1\">\r\n <div className=\"delete_link di\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(true);\r\n }}\r\n className=\"delete\"\r\n hidden={deleteAsk}\r\n >\r\n {t('delete')}\r\n </button>\r\n <span className=\"confirm thm-text-error\" hidden={!deleteAsk}>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(false);\r\n }}\r\n >\r\n {t('cancel')} / \r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => void onDestroy()}\r\n className=\"thm-text-error\"\r\n >\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n ) : null}\r\n {apiError ? <div className=\"alert alert-err\">{apiError}</div> : null}\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"url\">{t('addForm.url')}</label>\r\n </td>\r\n <td>\r\n <input\r\n type=\"url\"\r\n id=\"url\"\r\n className=\"w-100 mv1\"\r\n required\r\n name=\"url\"\r\n autoFocus={bm.url === ''}\r\n value={editBm.url}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, url: e.target.value }));\r\n }}\r\n />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"title\">{t('bmark.title')}</label>\r\n </td>\r\n <td className=\"flex\">\r\n <input\r\n type=\"text\"\r\n id=\"title\"\r\n className=\"w-100 mv1 flex-auto\"\r\n name=\"title\"\r\n value={editBm.title}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, title: e.target.value }));\r\n }}\r\n />\r\n <button\r\n disabled={loading}\r\n type=\"button\"\r\n onClick={() => void onFetchTitle()}\r\n className={`ml2 input-reset ba thm-border-primary pointer f6 di dim pa1 ma1 mr0${loading ? ' thm-bg-disabled' : ''}`}\r\n >\r\n {t('fetch')}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"description\">{t('bmark.description')}</label>\r\n </td>\r\n <td>\r\n <textarea\r\n className=\"w-100 mt1 thm-text-secondary\"\r\n id=\"description\"\r\n name=\"description\"\r\n rows={4}\r\n value={editBm.description}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, description: e.target.value }));\r\n }}\r\n />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"tags\">{t('bmark.tags')}</label>\r\n </td>\r\n <td>\r\n <div className=\"relative\">\r\n <input\r\n ref={tagInputRef}\r\n type=\"text\"\r\n id=\"tags\"\r\n className=\"w-100 mv1\"\r\n name=\"tags\"\r\n autoComplete=\"off\"\r\n autoCapitalize=\"off\"\r\n autoFocus={bm.url !== ''}\r\n value={editBm.tags}\r\n onChange={onTagsChange}\r\n onKeyDown={onTagsKeyDown}\r\n onClick={onTagsSelect}\r\n onSelect={onTagsSelect}\r\n onBlur={() => {\r\n window.setTimeout(() => {\r\n closeSuggestions();\r\n }, 0);\r\n }}\r\n />\r\n {suggestionState != null ? (\r\n <TagSuggestionsDropdown\r\n suggestionState={suggestionState}\r\n onHover={onSuggestionHover}\r\n onPick={onSuggestionPick}\r\n />\r\n ) : null}\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"private\">{t('bmark.private')}</label>\r\n </td>\r\n <td>\r\n <div className=\"mr4 dib\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"private\"\r\n className=\"private pointer\"\r\n name=\"private\"\r\n checked={editBm.private}\r\n onChange={(e) => {\r\n setEditBm((x) => ({\r\n ...x,\r\n private: e.target.checked,\r\n ...(a.dat.archiveBackendEnabled && editBm.archiveRequested && e.target.checked\r\n ? { archiveRequested: false }\r\n : {}),\r\n }));\r\n }}\r\n />\r\n </div>\r\n {!(bm.bid > 0) && a.dat.archiveBackendEnabled ? (\r\n <div\r\n className={`dib ${editBm.private ? 'o-50' : ''}`}\r\n title={editBm.private ? t('addForm.archiveUnavailable') : undefined}\r\n >\r\n <label className=\"mr2 di\" htmlFor=\"archiveRequested\">\r\n {t('archive')}\r\n </label>\r\n <input\r\n type=\"checkbox\"\r\n id=\"archiveRequested\"\r\n className=\"archive pointer ml2\"\r\n name=\"archiveRequested\"\r\n disabled={editBm.private}\r\n checked={editBm.archiveRequested ?? false}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, archiveRequested: e.target.checked }));\r\n }}\r\n />\r\n </div>\r\n ) : null}\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"toread\">{t('addForm.readLater')}</label>\r\n </td>\r\n <td>\r\n <input\r\n type=\"checkbox\"\r\n id=\"toread\"\r\n className=\"toread pointer\"\r\n name=\"toread\"\r\n checked={editBm.toread}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, toread: e.target.checked }));\r\n }}\r\n />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td />\r\n <td>\r\n <input\r\n type=\"submit\"\r\n className=\"ph3 pv2 input-reset thm-text-strong ba thm-border-primary bg-transparent pointer f6 dib mt1 dim\"\r\n value={bm.bid > 0 ? t('addForm.update') : t('addForm.add')}\r\n />\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </form>\r\n );\r\n}\r\n", "import React from 'react';\r\n\r\nimport { fetchTagSuggestions } from '../api';\r\nimport type { TagSuggestionRequest, TSuggestion } from '../types';\r\n\r\nexport type SuggestionState = {\r\n items: TSuggestion[];\r\n selectedIndex: number;\r\n tokenRange: TagTokenRange;\r\n anchorLeft: number;\r\n anchorTop: number;\r\n};\r\n\r\ntype TagTokenRange = {\r\n token: string;\r\n start: number;\r\n end: number;\r\n};\r\n\r\nconst TAG_SUGGESTION_DEBOUNCE_MS = 180;\r\n\r\nexport function useTagSuggestions({\r\n enabled,\r\n useReturnKey = true,\r\n tags,\r\n onTagsUpdate,\r\n maxSuggestions = 10,\r\n}: {\r\n enabled: boolean;\r\n useReturnKey?: boolean;\r\n tags: string;\r\n onTagsUpdate: (next: string) => void;\r\n maxSuggestions?: number;\r\n}) {\r\n const [suggestionState, setSuggestionState] = React.useState<SuggestionState | null>(null);\r\n const tagSuggestionRequestId = React.useRef(0);\r\n const tagSuggestionDebounceRef = React.useRef<number | null>(null);\r\n const tagInputRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const cancelPendingSuggestions = React.useCallback(() => {\r\n if (tagSuggestionDebounceRef.current != null) {\r\n window.clearTimeout(tagSuggestionDebounceRef.current);\r\n tagSuggestionDebounceRef.current = null;\r\n }\r\n tagSuggestionRequestId.current += 1;\r\n }, []);\r\n\r\n const closeSuggestions = React.useCallback(() => {\r\n cancelPendingSuggestions();\r\n setSuggestionState(null);\r\n }, [cancelPendingSuggestions]);\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n cancelPendingSuggestions();\r\n };\r\n }, [cancelPendingSuggestions]);\r\n\r\n React.useEffect(() => {\r\n if (!enabled) closeSuggestions();\r\n }, [enabled, closeSuggestions]);\r\n\r\n const onTagsChange = React.useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, selectionStart, selectionEnd } = e.target;\r\n\r\n onTagsUpdate(value);\r\n\r\n if (!enabled) {\r\n closeSuggestions();\r\n return;\r\n }\r\n\r\n if (selectionStart == null || selectionEnd == null || selectionStart !== selectionEnd) {\r\n closeSuggestions();\r\n return;\r\n }\r\n\r\n if (isWhitespaceOnlyEdit(tags, value)) {\r\n closeSuggestions();\r\n return;\r\n }\r\n\r\n const activeToken = getActiveTagToken(value, selectionStart);\r\n if (activeToken == null || activeToken.token.length < 2) {\r\n closeSuggestions();\r\n return;\r\n }\r\n\r\n const normalizedTagTerms = getNormalizedTagTerms(value);\r\n const activeTokenNormalized = activeToken.token.toLowerCase();\r\n const activeTokenOccurrences = normalizedTagTerms.filter(\r\n (tag) => tag === activeTokenNormalized,\r\n ).length;\r\n const shouldExcludeActiveToken = activeTokenOccurrences > 1;\r\n const payload: TagSuggestionRequest = {\r\n query: activeToken.token,\r\n currentTags: Array.from(\r\n new Set(\r\n normalizedTagTerms.filter(\r\n (tag) => shouldExcludeActiveToken || tag !== activeTokenNormalized,\r\n ),\r\n ),\r\n ),\r\n };\r\n\r\n cancelPendingSuggestions();\r\n tagSuggestionDebounceRef.current = window.setTimeout(() => {\r\n const requestId = tagSuggestionRequestId.current + 1;\r\n tagSuggestionRequestId.current = requestId;\r\n\r\n void (async () => {\r\n const response = await fetchTagSuggestions(payload);\r\n\r\n if (\r\n requestId !== tagSuggestionRequestId.current ||\r\n response == null ||\r\n tagInputRef.current == null\r\n ) {\r\n return;\r\n }\r\n\r\n const items = response.suggestions.slice(0, maxSuggestions);\r\n if (items.length === 0) {\r\n closeSuggestions();\r\n return;\r\n }\r\n\r\n const anchor = measureCaretPosition(tagInputRef.current, selectionStart);\r\n\r\n setSuggestionState({\r\n items,\r\n selectedIndex: 0,\r\n tokenRange: activeToken,\r\n anchorLeft: anchor.left,\r\n anchorTop: anchor.top,\r\n });\r\n })();\r\n }, TAG_SUGGESTION_DEBOUNCE_MS);\r\n },\r\n [cancelPendingSuggestions, closeSuggestions, enabled, maxSuggestions, onTagsUpdate],\r\n );\r\n\r\n const applySuggestion = React.useCallback(\r\n (term: string) => {\r\n const input = tagInputRef.current;\r\n if (input == null || suggestionState == null) return;\r\n\r\n const next = replaceTokenAtRange(tags, suggestionState.tokenRange, term);\r\n onTagsUpdate(next.value);\r\n closeSuggestions();\r\n\r\n requestAnimationFrame(() => {\r\n input.focus();\r\n input.setSelectionRange(next.caret, next.caret);\r\n });\r\n },\r\n [closeSuggestions, onTagsUpdate, suggestionState, tags],\r\n );\r\n\r\n const onTagsKeyDown = React.useCallback(\r\n (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Escape') {\r\n if (suggestionState != null) {\r\n e.preventDefault();\r\n closeSuggestions();\r\n }\r\n return;\r\n }\r\n\r\n if (e.key === ' ') {\r\n closeSuggestions();\r\n return;\r\n }\r\n\r\n if (suggestionState == null) return;\r\n\r\n if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n setSuggestionState((current) => {\r\n if (current == null) return current;\r\n return {\r\n ...current,\r\n selectedIndex: (current.selectedIndex + 1) % current.items.length,\r\n };\r\n });\r\n return;\r\n }\r\n\r\n if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n setSuggestionState((current) => {\r\n if (current == null) return current;\r\n return {\r\n ...current,\r\n selectedIndex:\r\n (current.selectedIndex - 1 + current.items.length) % current.items.length,\r\n };\r\n });\r\n return;\r\n }\r\n\r\n if (e.key === 'Tab' || (e.key === 'Enter' && useReturnKey)) {\r\n e.preventDefault();\r\n const selected = suggestionState.items[suggestionState.selectedIndex];\r\n applySuggestion(selected.term);\r\n }\r\n },\r\n [applySuggestion, closeSuggestions, suggestionState, useReturnKey],\r\n );\r\n\r\n const onTagsSelect = React.useCallback(\r\n (e: React.SyntheticEvent<HTMLInputElement>) => {\r\n if (suggestionState == null) return;\r\n\r\n const input = e.currentTarget;\r\n const { selectionStart, selectionEnd, value } = input;\r\n if (selectionStart == null || selectionEnd == null || selectionStart !== selectionEnd) {\r\n closeSuggestions();\r\n return;\r\n }\r\n\r\n const activeToken = getActiveTagToken(value, selectionStart);\r\n if (activeToken == null) {\r\n closeSuggestions();\r\n return;\r\n }\r\n\r\n if (activeToken.start !== suggestionState.tokenRange.start) {\r\n closeSuggestions();\r\n }\r\n },\r\n [closeSuggestions, suggestionState],\r\n );\r\n\r\n const onSuggestionHover = React.useCallback((index: number) => {\r\n setSuggestionState((current) => {\r\n if (current == null) return current;\r\n return { ...current, selectedIndex: index };\r\n });\r\n }, []);\r\n\r\n return {\r\n tagInputRef,\r\n suggestionState,\r\n closeSuggestions,\r\n onTagsChange,\r\n onTagsKeyDown,\r\n onTagsSelect,\r\n onSuggestionHover,\r\n onSuggestionPick: applySuggestion,\r\n };\r\n}\r\n\r\nfunction getActiveTagToken(value: string, caret: number): TagTokenRange | null {\r\n const boundedCaret = Math.max(0, Math.min(caret, value.length));\r\n\r\n let start = boundedCaret;\r\n while (start > 0 && value[start - 1] !== ' ') {\r\n start -= 1;\r\n }\r\n\r\n let end = boundedCaret;\r\n while (end < value.length && value[end] !== ' ') {\r\n end += 1;\r\n }\r\n\r\n const token = value.slice(start, end).trim();\r\n return token === '' ? null : { token, start, end };\r\n}\r\n\r\nfunction measureCaretPosition(\r\n input: HTMLInputElement,\r\n caret: number,\r\n): { left: number; top: number } {\r\n const style = window.getComputedStyle(input);\r\n const mirror = document.createElement('div');\r\n mirror.style.position = 'absolute';\r\n mirror.style.visibility = 'hidden';\r\n mirror.style.whiteSpace = 'pre';\r\n mirror.style.top = '0';\r\n mirror.style.left = '0';\r\n mirror.style.font = style.font;\r\n mirror.style.fontKerning = style.fontKerning;\r\n mirror.style.fontFeatureSettings = style.fontFeatureSettings;\r\n mirror.style.fontVariantLigatures = style.fontVariantLigatures;\r\n mirror.style.letterSpacing = style.letterSpacing;\r\n mirror.style.textTransform = style.textTransform;\r\n mirror.style.textIndent = style.textIndent;\r\n mirror.style.boxSizing = style.boxSizing;\r\n mirror.style.padding = style.padding;\r\n mirror.style.border = style.border;\r\n mirror.style.width = `${String(input.clientWidth)}px`;\r\n\r\n const prefix = document.createElement('span');\r\n prefix.textContent = input.value.slice(0, caret);\r\n mirror.appendChild(prefix);\r\n\r\n const marker = document.createElement('span');\r\n marker.textContent = '\\u200b';\r\n mirror.appendChild(marker);\r\n\r\n document.body.appendChild(mirror);\r\n const left = marker.offsetLeft - input.scrollLeft + 1;\r\n const top = marker.offsetTop - input.scrollTop + input.offsetHeight + 4;\r\n document.body.removeChild(mirror);\r\n\r\n return { left, top };\r\n}\r\n\r\nfunction replaceTokenAtRange(\r\n value: string,\r\n range: TagTokenRange,\r\n replacement: string,\r\n): { value: string; caret: number } {\r\n const prefix = value.slice(0, range.start);\r\n // Consume any existing leading space from the suffix so we always own the\r\n // separator. This lets us unconditionally append a trailing space and place\r\n // the caret after it, whether the accepted tag is in the middle or at the end.\r\n const suffix = value.slice(range.end).replace(/^ /, '');\r\n const inserted = `${replacement} `;\r\n return {\r\n value: `${prefix}${inserted}${suffix}`,\r\n caret: prefix.length + inserted.length,\r\n };\r\n}\r\n\r\nfunction isWhitespaceOnlyEdit(previous: string, next: string): boolean {\r\n if (previous === next) return false;\r\n\r\n let start = 0;\r\n while (start < previous.length && start < next.length && previous[start] === next[start]) {\r\n start += 1;\r\n }\r\n\r\n let prevEnd = previous.length;\r\n let nextEnd = next.length;\r\n while (prevEnd > start && nextEnd > start && previous[prevEnd - 1] === next[nextEnd - 1]) {\r\n prevEnd -= 1;\r\n nextEnd -= 1;\r\n }\r\n\r\n const removed = previous.slice(start, prevEnd);\r\n const added = next.slice(start, nextEnd);\r\n if (removed === '' && added === '') return false;\r\n return isSpacesOnly(removed) && isSpacesOnly(added);\r\n}\r\n\r\nfunction isSpacesOnly(value: string): boolean {\r\n return value === '' || /^ *$/.test(value);\r\n}\r\n\r\nfunction getNormalizedTagTerms(value: string): string[] {\r\n return value\r\n .split(' ')\r\n .map((tag) => tag.trim().toLowerCase())\r\n .filter((tag) => tag !== '');\r\n}\r\n", "import React from 'react';\r\n\r\nimport type { SuggestionState } from '../hooks/useTagSuggestions';\r\n\r\nconst MAX_SUGGESTION_TERM_RENDER_LENGTH = 80;\r\n\r\nexport function TagSuggestionsDropdown({\r\n suggestionState,\r\n onHover,\r\n onPick,\r\n}: {\r\n suggestionState: SuggestionState;\r\n onHover: (index: number) => void;\r\n onPick: (term: string) => void;\r\n}) {\r\n return (\r\n <div\r\n className=\"absolute z-5 thm-bg-secondary thm-text-primary ba thm-border-default br2 shadow-4 overflow-hidden f6\"\r\n style={{\r\n left: suggestionState.anchorLeft,\r\n top: suggestionState.anchorTop,\r\n width: 'max-content',\r\n maxWidth: '22rem',\r\n }}\r\n >\r\n {suggestionState.items.map((item, index) => {\r\n const selected = index === suggestionState.selectedIndex;\r\n const displayTerm = truncateSuggestionTerm(item.term);\r\n return (\r\n <button\r\n key={`${item.term}-${item.count.toString()}`}\r\n type=\"button\"\r\n className={`flex items-center justify-between w-100 bn bg-transparent tl ph2 pv1 pointer nowrap thm-text-primary thm-hover-link-color ${selected ? 'thm-bg-selected thm-text-selected' : ''}`}\r\n onMouseEnter={() => {\r\n onHover(index);\r\n }}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n }}\r\n onClick={() => {\r\n onPick(item.term);\r\n }}\r\n title={item.term}\r\n >\r\n <span className=\"mr2\">\r\n {renderHighlightedSuggestion(displayTerm, suggestionState.tokenRange.token)}\r\n </span>\r\n <span className=\"thm-text-tertiary f6 tr\" style={{ minWidth: '3ch' }}>\r\n {item.count}\r\n </span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderHighlightedSuggestion(term: string, query: string): React.ReactNode {\r\n const lowerTerm = term.toLocaleLowerCase();\r\n const lowerQuery = query.toLocaleLowerCase();\r\n const idx = lowerTerm.indexOf(lowerQuery);\r\n if (idx < 0) return term;\r\n\r\n const before = term.slice(0, idx);\r\n const match = term.slice(idx, idx + query.length);\r\n const after = term.slice(idx + query.length);\r\n\r\n return (\r\n <>\r\n {before}\r\n <strong>{match}</strong>\r\n {after}\r\n </>\r\n );\r\n}\r\n\r\nfunction truncateSuggestionTerm(term: string): string {\r\n if (term.length <= MAX_SUGGESTION_TERM_RENDER_LENGTH) return term;\r\n return `${term.slice(0, MAX_SUGGESTION_TERM_RENDER_LENGTH)}...`;\r\n}\r\n", "import React from 'react';\r\n\r\nimport { useBookmarksStore } from '../stores/bookmarksStore';\r\nimport type { Bookmark } from '../types';\r\nimport { BMark } from './BMark';\r\n\r\n/** Renders the full list of bookmarks, delegating each item to BMark. */\r\nexport function BList({ initial }: { initial: Bookmark[] }) {\r\n const [hasHydrated, setHasHydrated] = React.useState(false);\r\n const bmarks = useBookmarksStore((s) => s.bmarks);\r\n const setAll = useBookmarksStore((s) => s.setAll);\r\n const removeById = useBookmarksStore((s) => s.removeById);\r\n const upsert = useBookmarksStore((s) => s.upsert);\r\n\r\n React.useLayoutEffect(() => {\r\n setAll(initial);\r\n setHasHydrated(true);\r\n }, [initial, setAll]);\r\n\r\n const visibleBmarks = hasHydrated ? bmarks : initial;\r\n\r\n return (\r\n <div>\r\n {visibleBmarks.map((b) => (\r\n <BMark\r\n key={b.bid}\r\n initial={b}\r\n onNotifyRemove={() => {\r\n removeById(b.bid);\r\n }}\r\n onUpdated={(bm) => {\r\n upsert(bm);\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n", "const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n", "import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n", "import { create } from 'zustand';\n\nimport type { Bookmark } from '../types';\n\nexport type BookmarksState = {\n bmarks: Bookmark[];\n setAll: (bmarks: Bookmark[]) => void;\n removeById: (bid: number) => void;\n upsert: (bm: Bookmark) => void;\n};\n\nexport const useBookmarksStore = create<BookmarksState>((set) => ({\n bmarks: [],\n setAll: (bmarks) => {\n set({ bmarks });\n },\n removeById: (bid) => {\n set((s) => ({ bmarks: s.bmarks.filter((b) => b.bid !== bid) }));\n },\n upsert: (bm) => {\n set((s) => ({ bmarks: s.bmarks.map((b) => (b.bid === bm.bid ? bm : b)) }));\n },\n}));\n", "import { TimeoutError } from 'ky';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { archiveBookmark, destroy, editBookmark, lookupTitle, markRead, toggleStar } from '../api';\r\nimport { app, setFocus, shdatetime, toLocaleDateString } from '../globals';\r\nimport { useTagSuggestions } from '../hooks/useTagSuggestions';\r\nimport type { Bookmark } from '../types';\r\nimport { apiErrorMsg, encodeTag, fromNullableStr, normalizeTags } from '../util';\r\nimport { Markdown } from './Markdown';\r\nimport { TagSuggestionsDropdown } from './TagSuggestionsDropdown';\r\n\r\n/** Displays a single bookmark with inline editing, starring, and deletion. */\r\nexport function BMark({\r\n initial,\r\n onNotifyRemove,\r\n onUpdated,\r\n}: {\r\n initial: Bookmark;\r\n onNotifyRemove: () => void;\r\n onUpdated: (bm: Bookmark) => void;\r\n}) {\r\n const { t } = useTranslation();\r\n const a = app();\r\n const [bm, setBm] = React.useState<Bookmark>(initial);\r\n const [editBm, setEditBm] = React.useState<Bookmark>(initial);\r\n const [deleteAsk, setDeleteAsk] = React.useState(false);\r\n const [edit, setEdit] = React.useState(false);\r\n const [loading, setLoading] = React.useState(false);\r\n const [archiving, setArchiving] = React.useState(false);\r\n const [archived, setArchived] = React.useState(false);\r\n const [actionError, setActionError] = React.useState<string | null>(null);\r\n const [errorFadingOut, setErrorFadingOut] = React.useState(false);\r\n const errorTimer = React.useRef<number | null>(null);\r\n const fadeTimer = React.useRef<number | null>(null);\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n if (errorTimer.current !== null) window.clearTimeout(errorTimer.current);\r\n if (fadeTimer.current !== null) window.clearTimeout(fadeTimer.current);\r\n };\r\n }, []);\r\n\r\n function clearErrorTimers() {\r\n if (errorTimer.current !== null) {\r\n window.clearTimeout(errorTimer.current);\r\n errorTimer.current = null;\r\n }\r\n if (fadeTimer.current !== null) {\r\n window.clearTimeout(fadeTimer.current);\r\n fadeTimer.current = null;\r\n }\r\n }\r\n\r\n function showActionError(msg: string) {\r\n clearErrorTimers();\r\n setErrorFadingOut(false);\r\n setActionError(msg);\r\n errorTimer.current = window.setTimeout(() => {\r\n errorTimer.current = null;\r\n setErrorFadingOut(true);\r\n fadeTimer.current = window.setTimeout(() => {\r\n setActionError(null);\r\n setErrorFadingOut(false);\r\n fadeTimer.current = null;\r\n }, 5000);\r\n }, 3000);\r\n }\r\n\r\n const tagInputId = `${bm.bid.toString()}_tags`;\r\n\r\n const linkToFilterSingle = `${fromNullableStr(a.userR)}/b:${bm.slug}`;\r\n const linkToFilterTag = (tag: string) => `${fromNullableStr(a.userR)}/t:${encodeTag(tag)}`;\r\n const viewInContextTime = (time: Date) => {\r\n const t = new Date(time);\r\n const t2 = new Date(t.getTime() + 2);\r\n return t2.toISOString();\r\n };\r\n const linkToViewInContext = `${fromNullableStr(a.userR)}?before=${encodeURIComponent(viewInContextTime(new Date(bm.time)))}`;\r\n\r\n const suggestEnabled = a.dat.suggestTags === true;\r\n const suggestUseReturnKey = a.dat.suggestTagsUseReturnKey !== false;\r\n\r\n const {\r\n tagInputRef,\r\n suggestionState,\r\n closeSuggestions,\r\n onTagsChange,\r\n onTagsKeyDown,\r\n onTagsSelect,\r\n onSuggestionHover,\r\n onSuggestionPick,\r\n } = useTagSuggestions({\r\n enabled: suggestEnabled,\r\n useReturnKey: suggestUseReturnKey,\r\n tags: editBm.tags,\r\n onTagsUpdate: (tags) => {\r\n setEditBm((x) => ({ ...x, tags }));\r\n },\r\n });\r\n\r\n async function onStar(next: boolean) {\r\n try {\r\n const res = await toggleStar(bm.bid, next ? 'star' : 'unstar');\r\n if (!res.ok) {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n clearErrorTimers();\r\n setActionError(null);\r\n const updated = { ...bm, selected: next };\r\n setBm(updated);\r\n setEditBm((x) => ({ ...x, selected: next }));\r\n onUpdated(updated);\r\n } catch (err) {\r\n showActionError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n }\r\n\r\n async function onDestroy() {\r\n try {\r\n const res = await destroy(bm.bid);\r\n if (!res.ok) {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n onNotifyRemove();\r\n } catch (err) {\r\n showActionError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n }\r\n\r\n async function onMarkRead() {\r\n try {\r\n const res = await markRead(bm.bid);\r\n if (!res.ok) {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n clearErrorTimers();\r\n setActionError(null);\r\n const updated = { ...bm, toread: false };\r\n setBm(updated);\r\n onUpdated(updated);\r\n } catch (err) {\r\n showActionError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n }\r\n\r\n function startEdit(next: boolean) {\r\n setEditBm(bm);\r\n setEdit(next);\r\n clearErrorTimers();\r\n setActionError(null);\r\n setErrorFadingOut(false);\r\n setArchiving(false);\r\n setArchived(false);\r\n closeSuggestions();\r\n if (next) setFocus(tagInputId);\r\n }\r\n\r\n async function onFetchTitle() {\r\n setLoading(true);\r\n try {\r\n const title = await lookupTitle(editBm);\r\n if (title != null) setEditBm((x) => ({ ...x, title }));\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function onArchive() {\r\n setArchiving(true);\r\n setArchived(true);\r\n try {\r\n const res = await archiveBookmark(bm.bid);\r\n if (!res.ok) {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n } finally {\r\n setArchiving(false);\r\n }\r\n }\r\n\r\n const onSubmit = async (e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>): Promise<void> => {\r\n e.preventDefault();\r\n clearErrorTimers();\r\n setActionError(null);\r\n setErrorFadingOut(false);\r\n const editBm2 = { ...editBm, tags: normalizeTags(editBm.tags) };\r\n try {\r\n const res = await editBookmark(editBm2);\r\n if (res.ok && res.status >= 200 && res.status < 300) {\r\n setBm(editBm2);\r\n setEdit(false);\r\n onUpdated(editBm2);\r\n } else {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n }\r\n } catch (err) {\r\n showActionError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n };\r\n\r\n const archivingDisabled = archiving || archived || editBm.private || bm.url !== editBm.url;\r\n\r\n return (\r\n <div\r\n id={String(bm.bid)}\r\n className={`bookmark w-100 mw7 pa1 mb3${bm.private ? ' private' : ''}`}\r\n >\r\n {a.dat.isowner ? (\r\n <div className={`star fl pointer${bm.selected ? ' selected' : ''}`}>\r\n <button\r\n className=\"thm-text-border\"\r\n onClick={() => void onStar(!bm.selected)}\r\n type=\"button\"\r\n >\r\n \u272D\r\n </button>\r\n </div>\r\n ) : null}\r\n\r\n {!edit ? (\r\n <div className=\"display\">\r\n <a\r\n href={bm.url}\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n className={`link bmark-link f5 lh-title${bm.toread ? ' unread' : ''}`}\r\n >\r\n {bm.title === '' ? t('noTitle') : bm.title}\r\n </a>\r\n <br />\r\n <a href={bm.url} className=\"link bmark-link f7 thm-text-tertiary thm-hover-link-color\">\r\n {bm.url}\r\n </a>\r\n {bm.archiveUrl ? (\r\n <a\r\n href={bm.archiveUrl}\r\n className=\"link f7 thm-text-tertiary thm-hover-link-color ml2 thm-text-success\"\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n title={t('bmark.archiveLinkTitle')}\r\n >\r\n \u2611\r\n </a>\r\n ) : null}\r\n <br />\r\n <div className=\"description mt1 thm-text-secondary\">\r\n <Markdown text={bm.description} />\r\n </div>\r\n <div className=\"tags\">\r\n {bm.tags !== ''\r\n ? bm.tags.split(' ').map((tag) => (\r\n <a\r\n key={tag}\r\n className={`link tag mr1${tag.slice(0, 1) === '.' ? ' private' : ''}`}\r\n href={linkToFilterTag(tag)}\r\n >\r\n {tag}\r\n </a>\r\n ))\r\n : null}\r\n </div>\r\n\r\n <div>\r\n <a\r\n className=\"link f7 di mr5 thm-text-tertiary\"\r\n href={linkToFilterSingle}\r\n data-time={bm.time}\r\n title={shdatetime(a.lang, bm.time)}\r\n >\r\n {toLocaleDateString(a.lang, bm.time)}\r\n </a>\r\n\r\n {a.dat.isowner ? (\r\n <div className=\"edit_links di\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n startEdit(true);\r\n }}\r\n className=\"edit thm-text-muted thm-hover-link-color\"\r\n >\r\n {t('edit')} \r\n </button>\r\n <div className=\"delete_link di\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(true);\r\n }}\r\n className={`delete thm-text-muted thm-hover-link-color${deleteAsk ? ' dn' : ''}`}\r\n >\r\n {t('delete')}\r\n </button>\r\n <span className={`confirm thm-text-error${!deleteAsk ? ' dn' : ''}`}>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(false);\r\n }}\r\n >\r\n {t('cancel')} / \r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => void onDestroy()}\r\n className=\"thm-text-error\"\r\n >\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n {a.dat.isowner && bm.toread ? (\r\n <div className=\"read di\">\r\n \r\n <button onClick={() => void onMarkRead()} className=\"mark_read\" type=\"button\">\r\n {t('bmark.markAsRead')}\r\n </button>\r\n </div>\r\n ) : null}\r\n </div>\r\n\r\n {a.dat.filter?.tag == 'FilterSingle' ? (\r\n <div className=\"mt2\">\r\n <a className=\"link f7 di mr5\" href={linkToViewInContext}>\r\n {t('bmark.viewInContext')}\r\n </a>\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n {edit ? (\r\n <div className=\"edit_bookmark_form pa2 pt0 thm-bg-surface\">\r\n <form onSubmit={(e) => void onSubmit(e)}>\r\n <div>{t('bmark.url')}</div>\r\n <input\r\n type=\"url\"\r\n className=\"url w-100 mb2 pt1 edit_form_input\"\r\n required\r\n name=\"url\"\r\n value={editBm.url}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, url: e.target.value }));\r\n }}\r\n />\r\n <div>{t('bmark.title')}</div>\r\n <div className=\"flex\">\r\n <input\r\n type=\"text\"\r\n className=\"title w-100 mb2 pt1 edit_form_input\"\r\n name=\"title\"\r\n value={editBm.title}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, title: e.target.value }));\r\n }}\r\n />\r\n <button\r\n disabled={loading}\r\n type=\"button\"\r\n onClick={() => void onFetchTitle()}\r\n className={`ml1 pa1 mb2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim f7${\r\n loading ? ' thm-bg-disabled' : ''\r\n }`}\r\n >\r\n {t('fetch')}\r\n </button>\r\n </div>\r\n <div>{t('bmark.description')}</div>\r\n <textarea\r\n className=\"description w-100 mb1 pt1 edit_form_input\"\r\n name=\"description\"\r\n rows={5}\r\n value={editBm.description}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, description: e.target.value }));\r\n }}\r\n />\r\n <div id=\"tags_input_box\">\r\n <div>{t('bmark.tags')}</div>\r\n <div className=\"relative\">\r\n <input\r\n id={tagInputId}\r\n ref={tagInputRef}\r\n type=\"text\"\r\n className=\"tags w-100 mb1 pt1 edit_form_input\"\r\n name=\"tags\"\r\n autoComplete=\"off\"\r\n autoCapitalize=\"off\"\r\n value={editBm.tags}\r\n onChange={onTagsChange}\r\n onKeyDown={onTagsKeyDown}\r\n onClick={onTagsSelect}\r\n onSelect={onTagsSelect}\r\n onBlur={() => {\r\n window.setTimeout(() => {\r\n closeSuggestions();\r\n }, 0);\r\n }}\r\n />\r\n {suggestionState != null ? (\r\n <TagSuggestionsDropdown\r\n suggestionState={suggestionState}\r\n onHover={onSuggestionHover}\r\n onPick={onSuggestionPick}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n <div className=\"edit_form_checkboxes mv3\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"private pointer\"\r\n id=\"edit_private\"\r\n name=\"private\"\r\n checked={editBm.private}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, private: e.target.checked }));\r\n }}\r\n />{' '}\r\n <label htmlFor=\"edit_private\" className=\"mr2\">\r\n {t('bmark.private')}\r\n </label>{' '}\r\n <input\r\n type=\"checkbox\"\r\n className=\"toread pointer\"\r\n id=\"edit_toread\"\r\n name=\"toread\"\r\n checked={editBm.toread}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, toread: e.target.checked }));\r\n }}\r\n />{' '}\r\n <label htmlFor=\"edit_toread\">{t('bmark.toread')}</label>\r\n </div>\r\n <div className=\"flex justify-between items-center\">\r\n <div>\r\n <input\r\n type=\"submit\"\r\n className=\"mr1 pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n value={t('save')}\r\n />{' '}\r\n <input\r\n type=\"reset\"\r\n className=\"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n value={t('cancel')}\r\n onClick={() => {\r\n startEdit(false);\r\n }}\r\n />\r\n </div>\r\n {a.dat.archiveBackendEnabled ? (\r\n <button\r\n type=\"button\"\r\n disabled={archivingDisabled}\r\n onClick={() => void onArchive()}\r\n className={`pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary${archiving ? ' thm-bg-disabled' : ''}${archivingDisabled ? ' not-allowed o-20' : ''}`}\r\n >\r\n {archiving ? t('archiving') : t('archive')}\r\n </button>\r\n ) : null}\r\n </div>\r\n </form>\r\n </div>\r\n ) : null}\r\n\r\n {actionError != null ? (\r\n <span\r\n className=\"thm-text-error f7 db mt1\"\r\n style={{\r\n opacity: errorFadingOut ? 0 : 1,\r\n transition: errorFadingOut ? 'opacity 5s' : 'none',\r\n }}\r\n >\r\n {actionError}\r\n </span>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function <T>(x: T): T {\n return x;\n };\n}\n\nif (!seal) {\n seal = function <T>(x: T): T {\n return x;\n };\n}\n\nif (!apply) {\n apply = function <T>(\n func: (thisArg: any, ...args: any[]) => T,\n thisArg: any,\n ...args: any[]\n ): T {\n return func.apply(thisArg, args);\n };\n}\n\nif (!construct) {\n construct = function <T>(Func: new (...args: any[]) => T, ...args: any[]): T {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString =\n typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);\nconst symbolToString =\n typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n return (thisArg: any, ...args: any[]): T => {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n\n return apply(func, thisArg, args);\n };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(\n Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n set: Record<string, boolean>,\n array: readonly unknown[],\n transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, boolean> {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n if (!arrayIsArray(array)) {\n return set;\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n (array as unknown[])[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element as string] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (arrayIsArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * Convert non-node values into strings without depending on direct property access.\n *\n * @param value - The value to stringify.\n * @returns A string representation of the provided value.\n */\nfunction stringifyValue(value: unknown): string {\n switch (typeof value) {\n case 'string': {\n return value;\n }\n\n case 'number': {\n return numberToString(value);\n }\n\n case 'boolean': {\n return booleanToString(value);\n }\n\n case 'bigint': {\n return bigintToString ? bigintToString(value) : '0';\n }\n\n case 'symbol': {\n return symbolToString ? symbolToString(value) : 'Symbol()';\n }\n\n case 'undefined': {\n return objectToString(value);\n }\n\n case 'function':\n case 'object': {\n if (value === null) {\n return objectToString(value);\n }\n\n const valueAsRecord = value as Record<string, any>;\n const valueToString = lookupGetter(valueAsRecord, 'toString');\n\n if (typeof valueToString === 'function') {\n const stringified = valueToString(valueAsRecord);\n\n return typeof stringified === 'string'\n ? stringified\n : objectToString(stringified);\n }\n\n return objectToString(value);\n }\n\n default: {\n return objectToString(value);\n }\n }\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n object: T,\n prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(): null {\n return null;\n }\n\n return fallbackValue;\n}\n\nfunction isRegex(value: unknown): value is RegExp {\n try {\n regExpTest(value as RegExp, '');\n return true;\n } catch {\n return false;\n }\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayIsArray,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n arraySplice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n objectToString,\n // RegExp\n regExpTest,\n isRegex,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Other conversion\n stringifyValue,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'shadow',\n 'slot',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n] as const);\n\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'enterkeyhint',\n 'exportparts',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'inputmode',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'part',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n] as const);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'command',\n 'commandfor',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'exportparts',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inert',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'part',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'slot',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n] as const);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'mask-type',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnalign',\n 'columnlines',\n 'columnspacing',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lquote',\n 'lspace',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n] as const);\n", "import { seal } from './utils.js';\n\nexport const MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n", "/* eslint-disable @typescript-eslint/indent */\n\nimport type {\n TrustedHTML,\n TrustedTypesWindow,\n} from 'trusted-types/lib/index.js';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayIsArray,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySplice,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n isRegex,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n stringifyValue,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n trustedTypes: TrustedTypePolicyFactory,\n purifyHostElement: HTMLScriptElement\n) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nconst _createHooksMap = function (): HooksMap {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: [],\n };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n DOMPurify.version = VERSION;\n\n DOMPurify.removed = [];\n\n if (\n !window ||\n !window.document ||\n window.document.nodeType !== NODE_TYPE.document ||\n !window.Element\n ) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript: HTMLScriptElement =\n originalDocument.currentScript as HTMLScriptElement;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n const getShadowRoot = lookupGetter(ElementPrototype, 'shadowRoot');\n const getAttributes = lookupGetter(ElementPrototype, 'attributes');\n const getNodeType =\n Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;\n const getNodeName =\n Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = _createHooksMap();\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n })\n );\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (\u00A77.3.3)\n * - DOM Tree Accessors (\u00A73.1.5)\n * - Form Element Parent-Child Relations (\u00A74.10.3)\n * - Iframe srcdoc / Nested WindowProxies (\u00A74.8.5)\n * - HTMLCollection (\u00A74.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES: UseProfilesConfig | false = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG: Config | null = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (\n testValue: unknown\n ): testValue is Function | RegExp {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg: Config = {}): void {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS =\n objectHasOwnProperty(cfg, 'ALLOWED_TAGS') &&\n arrayIsArray(cfg.ALLOWED_TAGS)\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR =\n objectHasOwnProperty(cfg, 'ALLOWED_ATTR') &&\n arrayIsArray(cfg.ALLOWED_ATTR)\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES =\n objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') &&\n arrayIsArray(cfg.ALLOWED_NAMESPACES)\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES =\n objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') &&\n arrayIsArray(cfg.ADD_URI_SAFE_ATTR)\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n cfg.ADD_URI_SAFE_ATTR,\n transformCaseFunc\n )\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS =\n objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') &&\n arrayIsArray(cfg.ADD_DATA_URI_TAGS)\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS),\n cfg.ADD_DATA_URI_TAGS,\n transformCaseFunc\n )\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS =\n objectHasOwnProperty(cfg, 'FORBID_CONTENTS') &&\n arrayIsArray(cfg.FORBID_CONTENTS)\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS =\n objectHasOwnProperty(cfg, 'FORBID_TAGS') && arrayIsArray(cfg.FORBID_TAGS)\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : clone({});\n FORBID_ATTR =\n objectHasOwnProperty(cfg, 'FORBID_ATTR') && arrayIsArray(cfg.FORBID_ATTR)\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === 'object'\n ? clone(cfg.USE_PROFILES)\n : cfg.USE_PROFILES\n : false;\n\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = isRegex(cfg.ALLOWED_URI_REGEXP)\n ? cfg.ALLOWED_URI_REGEXP\n : EXPRESSIONS.IS_ALLOWED_URI; // Default regexp\n\n NAMESPACE =\n typeof cfg.NAMESPACE === 'string' ? cfg.NAMESPACE : HTML_NAMESPACE; // Default HTML namespace\n\n MATHML_TEXT_INTEGRATION_POINTS =\n objectHasOwnProperty(cfg, 'MATHML_TEXT_INTEGRATION_POINTS') &&\n cfg.MATHML_TEXT_INTEGRATION_POINTS &&\n typeof cfg.MATHML_TEXT_INTEGRATION_POINTS === 'object'\n ? clone(cfg.MATHML_TEXT_INTEGRATION_POINTS)\n : addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); // Default built-in map\n\n HTML_INTEGRATION_POINTS =\n objectHasOwnProperty(cfg, 'HTML_INTEGRATION_POINTS') &&\n cfg.HTML_INTEGRATION_POINTS &&\n typeof cfg.HTML_INTEGRATION_POINTS === 'object'\n ? clone(cfg.HTML_INTEGRATION_POINTS)\n : addToSet({}, ['annotation-xml']); // Default built-in map\n\n const customElementHandling =\n objectHasOwnProperty(cfg, 'CUSTOM_ELEMENT_HANDLING') &&\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING === 'object'\n ? clone(cfg.CUSTOM_ELEMENT_HANDLING)\n : create(null);\n\n CUSTOM_ELEMENT_HANDLING = create(null);\n\n if (\n objectHasOwnProperty(customElementHandling, 'tagNameCheck') &&\n isRegexOrFunction(customElementHandling.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck; // Default undefined\n }\n\n if (\n objectHasOwnProperty(customElementHandling, 'attributeNameCheck') &&\n isRegexOrFunction(customElementHandling.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n customElementHandling.attributeNameCheck; // Default undefined\n }\n\n if (\n objectHasOwnProperty(\n customElementHandling,\n 'allowCustomizedBuiltInElements'\n ) &&\n typeof customElementHandling.allowCustomizedBuiltInElements === 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n customElementHandling.allowCustomizedBuiltInElements; // Default undefined\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = create(null);\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent\n * leaking across calls when switching from function to array config */\n EXTRA_ELEMENT_HANDLING.tagCheck = null;\n EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\n /* Merge configuration parameters */\n if (objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else if (arrayIsArray(cfg.ADD_TAGS)) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n\n if (objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else if (arrayIsArray(cfg.ADD_ATTR)) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n\n if (\n objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') &&\n arrayIsArray(cfg.ADD_URI_SAFE_ATTR)\n ) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (\n objectHasOwnProperty(cfg, 'FORBID_CONTENTS') &&\n arrayIsArray(cfg.FORBID_CONTENTS)\n ) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n if (\n objectHasOwnProperty(cfg, 'ADD_FORBID_CONTENTS') &&\n arrayIsArray(cfg.ADD_FORBID_CONTENTS)\n ) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n /*\n * Mirror the clone-before-mutate pattern already applied above for\n * cfg.ADD_TAGS / cfg.ADD_ATTR: if any uponSanitize* hook is\n * registered AND the set still points at the default constant,\n * clone it. The hook then mutates the clone (in-call widening\n * still works exactly as documented) and the next default-cfg\n * call rebinds to the untouched original via the reassignment at\n * the top of this function.\n */\n if (\n (hooks.uponSanitizeElement.length > 0 ||\n hooks.uponSanitizeAttribute.length > 0) &&\n ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS\n ) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n if (\n hooks.uponSanitizeAttribute.length > 0 &&\n ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR\n ) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element: Element): boolean {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function (node: Node): void {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function (name: string, element: Element): void {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element,\n });\n }\n\n element.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty: string): Document {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n dirty +\n '</body></html>';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function (root: Node): NodeIterator {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null\n );\n };\n\n /**\n * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n * character data of an element subtree. Used as the final safety net for\n * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n * which only form after text-node normalization (e.g. fragments split across\n * stripped elements) cannot survive into a template-evaluating framework.\n *\n * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n * in place rather than round-tripping through innerHTML. This preserves\n * descendant node references (important for IN_PLACE callers), avoids a\n * serialize/reparse cycle, and reads literal character data \u2014 which means\n * `<%...%>` in text content matches the ERB regex against its real bytes\n * instead of the HTML-entity-escaped form innerHTML would produce.\n *\n * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n * attributes is performed during the per-node `_sanitizeAttributes` pass.\n *\n * @param node The root element whose character data should be scrubbed.\n */\n const _scrubTemplateExpressions = function (node: Element): void {\n node.normalize();\n const walker = createNodeIterator.call(\n node.ownerDocument || node,\n node,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_CDATA_SECTION |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION,\n null\n );\n\n let currentNode = walker.nextNode() as CharacterData | null;\n while (currentNode) {\n let data = currentNode.data;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n data = stringReplace(data, expr, ' ');\n });\n currentNode.data = data;\n currentNode = walker.nextNode() as CharacterData | null;\n }\n };\n\n /**\n * _isClobbered\n *\n * Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n * interface with [LegacyOverrideBuiltIns]; a descendant element with a\n * `name` attribute matching a prototype property shadows that property\n * on direct reads. We use this check at the IN_PLACE entry-point and\n * during attribute sanitization to refuse clobbered forms.\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function (element: Element): boolean {\n // Realm-independent tag-name probe. If we can't determine the tag\n // name at all, we can't reason about clobbering \u2014 return false\n // (the caller's other defences still apply).\n const realTagName = getNodeName ? getNodeName(element) : null;\n if (typeof realTagName !== 'string') {\n return false;\n }\n\n if (transformCaseFunc(realTagName) !== 'form') {\n return false;\n }\n\n return (\n typeof element.nodeName !== 'string' ||\n typeof element.textContent !== 'string' ||\n typeof element.removeChild !== 'function' ||\n // Realm-safe NamedNodeMap detection: equality against the cached\n // prototype getter. Clobbered .attributes (e.g. <input name=\"attributes\">)\n // makes the direct read diverge from the cached read; a clean form\n // (same-realm OR foreign-realm) has both reads pointing at the same\n // canonical NamedNodeMap.\n element.attributes !== getAttributes(element) ||\n typeof element.removeAttribute !== 'function' ||\n typeof element.setAttribute !== 'function' ||\n typeof element.namespaceURI !== 'string' ||\n typeof element.insertBefore !== 'function' ||\n typeof element.hasChildNodes !== 'function' ||\n // NodeType clobbering probe. Cached Node.prototype.nodeType getter\n // returns the integer 1 for any Element regardless of realm; direct\n // read on a clobbered form (e.g. <input name=\"nodeType\">) returns\n // the named child element. Cheap addition \u2014 nodeType is read from\n // an internal slot, no serialization cost \u2014 and removes a residual\n // clobbering surface used by several mXSS / PI / comment branches\n // in _sanitizeElements that compare currentNode.nodeType directly.\n element.nodeType !== getNodeType(element) ||\n // HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named\n // \"childNodes\" shadows the prototype getter. Direct reads of\n // form.childNodes from a clobbered form return the named child\n // instead of the real NodeList, so any walk that reads it directly\n // skips the form's real children. Compare the direct read to the\n // cached Node.prototype getter \u2014 when the form's named-property\n // getter intercepts the read, the two values differ and we flag\n // the form. This catches every clobbering child type (input,\n // select, etc.) regardless of whether the named child happens to\n // carry a numeric .length, which a typeof-based probe would miss\n // (e.g. HTMLSelectElement.length is a defined unsigned-long).\n element.childNodes !== getChildNodes(element)\n );\n };\n\n /**\n * Checks whether the given value is a DocumentFragment from any realm.\n *\n * The realm-independent replacement reads `nodeType` through the cached\n * Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n * constant (11). nodeType is a numeric value resolved from the node's\n * internal slot, identical across realms for the same kind of node.\n *\n * @param value object to check\n * @return true if value is a DocumentFragment-shaped node from any realm\n */\n const _isDocumentFragment = function (value: unknown): boolean {\n if (!getNodeType || typeof value !== 'object' || value === null) {\n return false;\n }\n\n try {\n return getNodeType(value as Node) === NODE_TYPE.documentFragment;\n } catch (_) {\n return false;\n }\n };\n\n /**\n * Checks whether the given object is a DOM node, including nodes that\n * originate from a different window/realm (e.g. an iframe's\n * contentDocument). The previous `value instanceof Node` check was\n * realm-bound: nodes from a different window failed it, causing\n * sanitize() to silently stringify them and reset IN_PLACE to false,\n * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n *\n * @param value object to check whether it's a DOM node\n * @return true if value is a DOM node from any realm\n */\n const _isNode = function (value: unknown): value is Node {\n if (!getNodeType || typeof value !== 'object' || value === null) {\n return false;\n }\n\n try {\n return typeof getNodeType(value) === 'number';\n } catch (_) {\n return false;\n }\n };\n\n function _executeHooks<T extends HookFunction>(\n hooks: HookFunction[],\n currentNode: Parameters<T>[0],\n data: Parameters<T>[1]\n ): void {\n arrayForEach(hooks, (hook: T) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode: any): boolean {\n let content = null;\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n SAFE_FOR_XML &&\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w!]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove risky CSS construction leading to mXSS */\n if (\n SAFE_FOR_XML &&\n currentNode.namespaceURI === HTML_NAMESPACE &&\n tagName === 'style' &&\n _isNode(currentNode.firstElementChild)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (\n SAFE_FOR_XML &&\n currentNode.nodeType === NODE_TYPE.comment &&\n regExpTest(/<[/\\w]/g, currentNode.data)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (\n FORBID_TAGS[tagName] ||\n (!(\n EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function &&\n EXTRA_ELEMENT_HANDLING.tagCheck(tagName)\n ) &&\n !ALLOWED_TAGS[tagName])\n ) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements.\n Use the cached prototype getters exclusively \u2014 the previous code\n had `|| currentNode.parentNode` / `|| currentNode.childNodes`\n fallbacks, but the cached getters always return the canonical\n value (or null for a real parent-less node), so the fallback\n path was dead in safe cases and a clobbering surface in unsafe\n ones. Falsy cached results stay falsy; the `if (childNodes &&\n parentNode)` check already gates correctly. */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode);\n const childNodes = getChildNodes(currentNode);\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): use the cached Node.prototype\n nodeType getter rather than `instanceof Element`, which is realm-\n bound and short-circuits to false for any node minted in a different\n realm \u2014 letting a foreign-realm element with a forbidden namespace\n slip past the namespace check entirely. */\n const nt = getNodeType ? getNodeType(currentNode) : currentNode.nodeType;\n if (nt === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (\n lcTag: string,\n lcName: string,\n value: string\n ): boolean {\n /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n if (FORBID_ATTR[lcName]) {\n return false;\n }\n\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n const nameIsPermitted =\n ALLOWED_ATTR[lcName] ||\n (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function &&\n EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag));\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!nameIsPermitted || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /* Names the HTML spec reserves from valid-custom-element-name; these must\n * never be treated as basic custom elements even when a permissive\n * CUSTOM_ELEMENT_HANDLING.tagNameCheck is configured. */\n const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'missing-glyph',\n ]);\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName: string): boolean {\n return (\n !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] &&\n regExpTest(CUSTOM_ELEMENT, tagName)\n );\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode: Element): void {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (\n SANITIZE_NAMED_PROPS &&\n (lcName === 'id' || lcName === 'name') &&\n stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0\n ) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n // Else: already prefixed, leave the attribute alone \u2014 the prefix is\n // itself the clobbering protection, and re-applying it is incorrect.\n\n /* Work around a security issue with comments inside attributes */\n if (\n SAFE_FOR_XML &&\n regExpTest(\n /((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,\n value\n )\n ) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n\n /* Deep shadow DOM detected.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType against the\n DOCUMENT_FRAGMENT_NODE constant rather than instanceof, so we\n recurse into <template>.content from foreign realms too. */\n if (_isDocumentFragment(shadowNode.content)) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* An element iterated here may itself host an attached\n shadow root. The default NodeIterator does not enter shadow\n trees, so a shadow root nested inside template.content was\n previously reached by no walk at all (the pre-pass at\n _sanitizeAttachedShadowRoots descends via childNodes, which\n doesn't enter template.content; the template-content recursion\n above iterates the content but never inspected shadowRoot).\n Walk it explicitly. The nodeType guard avoids reading\n shadowRoot off text / comment / CDATA / PI nodes that the\n iterator also surfaces. */\n const shadowNodeType = getNodeType\n ? getNodeType(shadowNode)\n : (shadowNode as Node).nodeType;\n if (shadowNodeType === NODE_TYPE.element) {\n const innerSr = getShadowRoot\n ? getShadowRoot(shadowNode)\n : (shadowNode as Element).shadowRoot;\n if (_isDocumentFragment(innerSr)) {\n _sanitizeAttachedShadowRoots(innerSr);\n _sanitizeShadowDOM(innerSr);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n\n /**\n * _sanitizeAttachedShadowRoots\n *\n * Walks `root` and feeds every attached shadow root we encounter into\n * the existing _sanitizeShadowDOM pipeline. The default node iterator\n * does not descend into shadow trees, so nodes inside an attached\n * shadow root would otherwise be skipped entirely.\n *\n * Two real input paths put attached shadow roots in front of us:\n * 1. IN_PLACE on a DOM node that already has shadow roots attached.\n * 2. DOM-node input where importNode(dirty, true) deep-clones the\n * shadow root because it was created with `clonable: true`.\n *\n * This pass runs once, up front, so the main iteration loop (and the\n * existing _sanitizeShadowDOM template-content recursion) stay\n * untouched \u2014 string-input paths are not affected.\n *\n * @param root the subtree root to walk for attached shadow roots\n */\n const _sanitizeAttachedShadowRoots = function (root: Node): void {\n const nodeType = getNodeType ? getNodeType(root) : (root as any).nodeType;\n\n if (nodeType === NODE_TYPE.element) {\n const sr = getShadowRoot\n ? getShadowRoot(root)\n : (root as Element).shadowRoot;\n // Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType-based\n // detection rather than `instanceof DocumentFragment`, which is\n // realm-bound and silently skipped shadow roots whose host element\n // belonged to a foreign realm (e.g. iframe.contentDocument\n // attachShadow). A foreign-realm ShadowRoot extends the foreign\n // realm's DocumentFragment, not ours, so the old instanceof check\n // returned false and the shadow subtree was never walked.\n if (_isDocumentFragment(sr)) {\n // Recurse first so that nested shadow roots are reached even if\n // _sanitizeShadowDOM removes hosts at this level.\n _sanitizeAttachedShadowRoots(sr);\n _sanitizeShadowDOM(sr);\n }\n }\n\n // Snapshot children before recursing. Sanitization of one subtree\n // (e.g. via an uponSanitizeShadowNode hook) may detach siblings,\n // and naive nextSibling traversal would silently skip the rest of\n // the list once a node is detached.\n const childNodes = getChildNodes\n ? getChildNodes(root)\n : (root as Element).childNodes;\n if (!childNodes) {\n return;\n }\n\n const snapshot: Node[] = [];\n arrayForEach(childNodes, (child) => {\n arrayPush(snapshot, child);\n });\n\n for (const child of snapshot) {\n _sanitizeAttachedShadowRoots(child);\n }\n\n /* When the root is a <template>, also descend into root.content */\n if (nodeType === NODE_TYPE.element) {\n const rootName = getNodeName ? getNodeName(root) : null;\n if (\n typeof rootName === 'string' &&\n transformCaseFunc(rootName) === 'template'\n ) {\n const content = (root as HTMLTemplateElement).content;\n if (_isDocumentFragment(content)) {\n _sanitizeAttachedShadowRoots(content);\n }\n }\n }\n };\n\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n dirty = stringifyValue(dirty);\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes.\n Read nodeName through the cached prototype getter \u2014 a clobbering\n child named \"nodeName\" on the form root would otherwise shadow\n the property and let this check skip the root-allowlist\n validation entirely. */\n const nn = getNodeName\n ? getNodeName(dirty as Node)\n : (dirty as Node).nodeName;\n if (typeof nn === 'string') {\n const tagName = transformCaseFunc(nn);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n\n /* Pre-flight the root through _isClobbered. The iterator-driven\n removal path can not detach a parent-less root: _forceRemove\n falls through to Element.prototype.remove(), which per spec\n is a no-op on a node with no parent. A clobbered root would\n then survive the main loop with its attributes uninspected,\n because _sanitizeAttributes early-returns on _isClobbered. The\n result would be an attacker-controlled form, complete with any\n event-handler attributes the caller passed in, handed back to\n the application unsanitized. Refuse to sanitize such a root\n the same way we refuse a forbidden tag. GHSA-r47g-fvhr-h676. */\n if (_isClobbered(dirty as Element)) {\n throw typeErrorCreate(\n 'root node is clobbered and cannot be sanitized in-place'\n );\n }\n\n /* Sanitize attached shadow roots before the main iterator runs.\n The iterator does not descend into shadow trees. */\n _sanitizeAttachedShadowRoots(dirty as Node);\n } else if (_isNode(dirty)) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (\n importedNode.nodeType === NODE_TYPE.element &&\n importedNode.nodeName === 'BODY'\n ) {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n\n /* Clonable shadow roots are deep-cloned by importNode(); sanitize\n them before the main iterator runs, since the iterator does not\n descend into shadow trees. The walk routes every read through a\n cached prototype getter so clobbering descendants on a form root\n cannot hide a shadow host from this pass. */\n _sanitizeAttachedShadowRoots(importedNode);\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n\n /* Shadow DOM detected, sanitize it.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n instead of instanceof, so foreign-realm <template>.content is\n walked correctly. */\n if (_isDocumentFragment(currentNode.content)) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n if (SAFE_FOR_TEMPLATES) {\n _scrubTemplateExpressions(dirty as Element);\n }\n\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (SAFE_FOR_TEMPLATES) {\n _scrubTemplateExpressions(body);\n }\n\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n DOMPurify.addHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n DOMPurify.removeHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n return index === -1\n ? undefined\n : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n\n return arrayPop(hooks[entryPoint]);\n };\n\n DOMPurify.removeHooks = function (entryPoint: keyof HooksMap) {\n hooks[entryPoint] = [];\n };\n\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n /**\n * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n */\n (root?: WindowLike): DOMPurify;\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n version: string;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n removed: Array<RemovedElement | RemovedAttribute>;\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n isSupported: boolean;\n\n /**\n * Set the configuration once.\n *\n * @param cfg configuration object\n */\n setConfig(cfg?: Config): void;\n\n /**\n * Removes the configuration.\n */\n clearConfig(): void;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized TrustedHTML.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_TRUSTED_TYPE: true }\n ): TrustedHTML;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized document fragment.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_DOM_FRAGMENT: true }\n ): DocumentFragment;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized string.\n */\n sanitize(dirty: string | Node, cfg?: Config): string;\n\n /**\n * Checks if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n *\n * @param tag Tag name of containing element.\n * @param attr Attribute name.\n * @param value Attribute value.\n * @returns Returns true if `value` is valid. Otherwise, returns false.\n */\n isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction: DocumentFragmentHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction: UponSanitizeElementHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction: UponSanitizeAttributeHook\n ): void;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: BasicHookName,\n hookFunction?: NodeHook\n ): NodeHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: ElementHookName,\n hookFunction?: ElementHook\n ): ElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction?: DocumentFragmentHook\n ): DocumentFragmentHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction?: UponSanitizeElementHook\n ): UponSanitizeElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction?: UponSanitizeAttributeHook\n ): UponSanitizeAttributeHook | undefined;\n\n /**\n * Removes all DOMPurify hooks at a given entryPoint\n *\n * @param entryPoint entry point for the hooks to remove\n */\n removeHooks(entryPoint: HookName): void;\n\n /**\n * Removes all DOMPurify hooks.\n */\n removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n /**\n * The element that was removed.\n */\n element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n /**\n * The attribute that was removed.\n */\n attribute: Attr | null;\n\n /**\n * The element that the attribute was removed.\n */\n from: Node;\n}\n\ntype BasicHookName =\n | 'beforeSanitizeElements'\n | 'afterSanitizeElements'\n | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n | 'beforeSanitizeShadowDOM'\n | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n beforeSanitizeElements: NodeHook[];\n afterSanitizeElements: NodeHook[];\n beforeSanitizeShadowDOM: DocumentFragmentHook[];\n uponSanitizeShadowNode: NodeHook[];\n afterSanitizeShadowDOM: DocumentFragmentHook[];\n beforeSanitizeAttributes: ElementHook[];\n afterSanitizeAttributes: ElementHook[];\n uponSanitizeElement: UponSanitizeElementHook[];\n uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\ntype ArrayElement<T> = T extends Array<infer U> ? U : never;\n\ntype HookFunction = ArrayElement<HooksMap[keyof HooksMap]>;\n\nexport type HookName =\n | BasicHookName\n | ElementHookName\n | DocumentFragmentHookName\n | UponSanitizeElementHookName\n | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type ElementHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n this: DOMPurify,\n currentNode: DocumentFragment,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: UponSanitizeElementHookEvent,\n config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: UponSanitizeAttributeHookEvent,\n config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n tagName: string;\n allowedTags: Record<string, boolean>;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n attrName: string;\n attrValue: string;\n keepAttr: boolean;\n allowedAttributes: Record<string, boolean>;\n forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n typeof globalThis,\n | 'DocumentFragment'\n | 'HTMLTemplateElement'\n | 'Node'\n | 'Element'\n | 'NodeFilter'\n | 'NamedNodeMap'\n | 'HTMLFormElement'\n | 'DOMParser'\n> & {\n document?: Document;\n MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick<TrustedTypesWindow, 'trustedTypes'>;\n", "import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults<ParserOutput = string, RendererOutput = string>(): MarkedOptions<ParserOutput, RendererOutput> {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport let _defaults: MarkedOptions<any, any> = _getDefaults();\n\nexport function changeDefaults<ParserOutput = string, RendererOutput = string>(newDefaults: MarkedOptions<ParserOutput, RendererOutput>) {\n _defaults = newDefaults;\n}\n", "const noopTest = { exec: () => null } as unknown as RegExp;\n\nfunction cachedIndentRegex(createRegex: (indent: number) => RegExp) {\n const cache: RegExp[] = [];\n return (indent: number) => {\n const cacheIndex = Math.max(0, Math.min(3, indent - 1));\n let regex = cache[cacheIndex];\n if (!regex) {\n regex = createRegex(cacheIndex);\n cache[cacheIndex] = regex;\n }\n return regex;\n };\n}\n\nfunction edit(regex: string | RegExp, opt = '') {\n let source = typeof regex === 'string' ? regex : regex.source;\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(other.caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\n\n// use a default variable to ensure the regex is evaluated on client an not removed by minifiers\nconst supportsLookbehind = ((a = '') => {\ntry {\n return !!new RegExp('(?<=1)(?<!1)' + a);\n} catch {\n // See browser support here:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion\n return false;\n}\n})();\n\nexport const other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] +\\S/,\n listReplaceTask: /^\\[[ xX]\\] +/,\n listTaskCheckbox: /\\[[ xX]\\]/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`)),\n hrRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`)),\n fencesBeginRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}(?:\\`\\`\\`|~~~)`)),\n headingBeginRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}#`)),\n htmlBeginRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}<(?:[a-z].*>|!--)`, 'i')),\n blockquoteBeginRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}>`)),\n};\n\n/**\n * Block-Level Grammar\n */\n\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = / {0,3}(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/\\|table/g, '') // table not in commonmark\n .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\n\nconst list = edit(/^(bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\n\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit(\n '^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n+ '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n+ '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n+ '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n+ ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n\ntype BlockKeys = keyof typeof blockNormal;\n\n/**\n * GFM Block Grammar\n */\n\nconst gfmTable = edit(\n '^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockGfm: Record<BlockKeys, RegExp> = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nconst blockPedantic: Record<BlockKeys, RegExp> = {\n ...blockNormal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n\n/**\n * Inline-Level Grammar\n */\n\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = /[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nconst punctuation = edit(/^((?![*_])punctSpace)/, 'u')\n .replace(/punctSpace/g, _punctuationOrSpace).getRegex();\n\n// GFM allows ~ inside strong and em for strikethrough\nconst _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\n\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = edit(/link|precode-code|html/, 'g')\n .replace('link', /\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/)\n .replace('precode-', supportsLookbehind ? '(?<!`)()' : '(^^|[^`])')\n .replace('code', /(?<b>`+)[^`]+\\k<b>(?!`)/)\n .replace('html', /<(?! )[^<>]*?>/)\n .getRegex();\n\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/;\n\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\nconst emStrongRDelimAstCore =\n '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\n\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit(\n '^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n+ '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\n// Tilde left delimiter for strikethrough (similar to emStrongLDelim for asterisk)\nconst delLDelim = edit(/^~~?(?:((?!~)punct)|[^\\s~])/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\n// Tilde delimiter patterns for strikethrough (similar to asterisk)\nconst delRDelimCore =\n '^[^~]+(?=[^~])' // Consume to delim\n+ '|(?!~)punct(~~?)(?=[\\\\s]|$)' // (1) #~~ can only be a Right Delimiter\n+ '|notPunctSpace(~~?)(?!~)(?=punctSpace|$)' // (2) a~~#, a~~ can only be a Right Delimiter\n+ '|(?!~)punctSpace(~~?)(?=notPunctSpace)' // (3) #~~a, ~~a can only be Left Delimiter\n+ '|[\\\\s](~~?)(?!~)(?=punct)' // (4) ~~# can only be Left Delimiter\n+ '|(?!~)punct(~~?)(?!~)(?=punct)' // (5) #~~# can be either Left or Right Delimiter\n+ '|notPunctSpace(~~?)(?=notPunctSpace)'; // (6) a~~a can be either Left or Right Delimiter\n\nconst delRDelim = edit(delRDelimCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\n\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit(\n '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst _inlineLabel = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/;\n\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\n\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n\nconst _caseInsensitiveProtocol = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;\n\n/**\n * Normal Inline Grammar\n */\n\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n delLDelim: noopTest,\n delRDelim: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n\ntype InlineKeys = keyof typeof inlineNormal;\n\n/**\n * Pedantic Inline Grammar\n */\n\nconst inlinePedantic: Record<InlineKeys, RegExp> = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n\n/**\n * GFM Inline Grammar\n */\n\nconst inlineGfm: Record<InlineKeys, RegExp> = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n delLDelim,\n delRDelim,\n url: edit(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/)\n .replace('protocol', _caseInsensitiveProtocol)\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: edit(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/)\n .replace('protocol', _caseInsensitiveProtocol)\n .getRegex(),\n};\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\nconst inlineBreaks: Record<InlineKeys, RegExp> = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex(),\n};\n\n/**\n * exports\n */\n\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic,\n};\n\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic,\n};\n\nexport interface Rules {\n other: typeof other\n block: Record<BlockKeys, RegExp>\n inline: Record<InlineKeys, RegExp>\n}\n", "import { other } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeReplacements: { [index: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escapeHtmlEntities(html: string, encode?: boolean) {\n if (encode) {\n if (other.escapeTest.test(html)) {\n return html.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html)) {\n return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nexport function cleanUrl(href: string) {\n try {\n href = encodeURI(href).replace(other.percentDecode, '%');\n } catch {\n return null;\n }\n return href;\n}\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(other.splitPipe);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function trimTrailingBlankLines(str: string) {\n const lines = str.split('\\n');\n let end = lines.length - 1;\n while (end >= 0 && other.blankLine.test(lines[end])) {\n end--;\n }\n if (lines.length - end <= 2) {\n // we want to keep single trailing blank lines\n return str;\n }\n\n return lines.slice(0, end + 1).join('\\n');\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n\n return -1;\n}\n\nexport function expandTabs(line: string, indent = 0) {\n let col = indent;\n let expanded = '';\n for (const char of line) {\n if (char === '\\t') {\n const added = 4 - (col % 4);\n expanded += ' '.repeat(added);\n col += added;\n } else {\n expanded += char;\n col++;\n }\n }\n\n return expanded;\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n findClosingBracket,\n expandTabs,\n trimTrailingBlankLines,\n} from './helpers.ts';\nimport type { Rules } from './rules.ts';\nimport type { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens, Token } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick<Tokens.Link, 'href' | 'title'>, raw: string, lexer: _Lexer, rules: Rules): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n\n lexer.state.inLink = true;\n const token: Tokens.Link | Tokens.Image = {\n type: cap[0].charAt(0) === '!' ? 'image' : 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n}\n\nfunction indentCodeCompensation(raw: string, text: string, rules: Rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n rules!: Rules; // set by the lexer\n lexer!: _Lexer<ParserOutput, RendererOutput>; // set by the lexer\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const raw = this.options.pedantic\n ? cap[0]\n : trimTrailingBlankLines(cap[0]);\n const text = raw.replace(this.rules.other.codeRemoveIndent, '');\n return {\n type: 'code',\n raw,\n codeBlockStyle: 'indented',\n text,\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: rtrim(cap[0], '\\n'),\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens: Token[] = [];\n\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(this.rules.other.blockquoteSetextReplace, '\\n $1')\n .replace(this.rules.other.blockquoteSetextReplace2, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n\n const lastToken = tokens.at(-1);\n\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n } else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken as Tokens.Blockquote;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken as Tokens.List;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1)!.raw.length).split('\\n');\n continue;\n }\n }\n\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n let line = expandTabs(cap[2].split('\\n', 1)[0], cap[1].length);\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = line.search(this.rules.other.nonSpaceChar); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n const blockquoteBeginRegex = this.rules.other.blockquoteBeginRegex(indent);\n\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, ' ');\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of blockquote\n if (blockquoteBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.replace(this.rules.other.tabCharGlobal, ' ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n blankLine = !nextLine.trim();\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!this.options.gfm && this.rules.other.listIsTask.test(itemContents),\n loose: false,\n text: itemContents,\n tokens: [],\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n const lastItem = list.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n // not a list since there were no items\n return;\n }\n list.raw = list.raw.trimEnd();\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (const item of list.items) {\n this.lexer.state.top = false;\n item.tokens = this.lexer.blockTokens(item.text, []);\n const itemToken = item.tokens[0];\n if (item.task && (itemToken?.type === 'text' || itemToken?.type === 'paragraph')) {\n // Remove checkbox markdown from item tokens\n item.text = item.text.replace(this.rules.other.listReplaceTask, '');\n itemToken.raw = itemToken.raw.replace(this.rules.other.listReplaceTask, '');\n itemToken.text = itemToken.text.replace(this.rules.other.listReplaceTask, '');\n for (let i = this.lexer.inlineQueue.length - 1; i >= 0; i--) {\n if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[i].src)) {\n this.lexer.inlineQueue[i].src = this.lexer.inlineQueue[i].src.replace(this.rules.other.listReplaceTask, '');\n break;\n }\n }\n\n const taskRaw = this.rules.other.listTaskCheckbox.exec(item.raw);\n if (taskRaw) {\n const checkboxToken: Tokens.Checkbox = {\n type: 'checkbox',\n raw: taskRaw[0] + ' ',\n checked: taskRaw[0] !== '[ ]',\n };\n item.checked = checkboxToken.checked;\n if (list.loose) {\n if (item.tokens[0] && ['paragraph', 'text'].includes(item.tokens[0].type) && 'tokens' in item.tokens[0] && item.tokens[0].tokens) {\n item.tokens[0].raw = checkboxToken.raw + item.tokens[0].raw;\n item.tokens[0].text = checkboxToken.raw + item.tokens[0].text;\n item.tokens[0].tokens.unshift(checkboxToken);\n } else {\n item.tokens.unshift({\n type: 'paragraph',\n raw: checkboxToken.raw,\n text: checkboxToken.raw,\n tokens: [checkboxToken],\n });\n }\n } else {\n item.tokens.unshift(checkboxToken);\n }\n }\n } else if (item.task) {\n item.task = false;\n }\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = item.tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (const item of list.items) {\n item.loose = true;\n for (const token of item.tokens) {\n if (token.type === 'text') {\n token.type = 'paragraph';\n }\n }\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const raw = trimTrailingBlankLines(cap[0]);\n const token: Tokens.HTML = {\n type: 'html',\n block: true,\n raw,\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: raw,\n };\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: rtrim(cap[0], '\\n'),\n href,\n title,\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n\n const item: Tokens.Table = {\n type: 'table',\n raw: rtrim(cap[0], '\\n'),\n header: [],\n align: [],\n rows: [],\n };\n\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push('right');\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push('center');\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push('left');\n } else {\n item.align.push(null);\n }\n }\n\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n\n return item;\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n const text = cap[1].trim();\n return {\n type: 'heading',\n raw: rtrim(cap[0], '\\n'),\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: cap[1],\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex === -2) {\n // more open parens than closed\n return;\n }\n\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = this.rules.other.pedanticHrefTitle.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer, this.rules);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer, this.rules);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n if (!match[1] && !match[2] && !match[3] && !match[4]) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[4] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n\n const nextChar = match[1] || match[3] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) !== null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = [...rDelim].length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n\n del(src: string, maskedSrc: string, prevChar = ''): Tokens.Del | undefined {\n let match = this.rules.inline.delLDelim.exec(src);\n if (!match) return;\n\n const nextChar = match[1] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength;\n\n const endReg = this.rules.inline.delRDelim;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) !== null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue;\n\n rLength = [...rDelim].length;\n\n if (rLength !== lLength) continue;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters\n rLength = Math.min(rLength, rLength + delimTotal);\n // char length can be >1 for unicode characters\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create del token - only single ~ or double ~~ supported\n const text = raw.slice(lLength, -lLength);\n return {\n type: 'del',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n autolink(src: string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[1];\n href = 'mailto:' + text;\n } else {\n text = cap[1];\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n url(src: string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[0];\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n inlineText(src: string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n escaped,\n };\n }\n }\n}\n", "import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { other, block, inline } from './rules.ts';\nimport type { Token, TokensList, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Block Lexer\n */\nexport class _Lexer<ParserOutput = string, RendererOutput = string> {\n tokens: TokensList;\n options: MarkedOptions<ParserOutput, RendererOutput>;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n public inlineQueue: { src: string, tokens: Token[] }[];\n\n private tokenizer: _Tokenizer<ParserOutput, RendererOutput>;\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n // TokenList cannot be created in one go\n this.tokens = [] as unknown as TokensList;\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true,\n };\n\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal,\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline,\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src.replace(other.carriageReturn, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[];\n blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList;\n blockTokens(src: string, tokens: Token[] = [], lastParagraphClipped = false) {\n this.tokenizer.lexer = this;\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, ' ').replace(other.spaceLine, '');\n }\n\n let srcLength = Infinity;\n while (src) {\n if (src.length < srcLength) {\n srcLength = src.length;\n } else {\n this.infiniteLoopError(src.charCodeAt(0));\n break;\n }\n\n let token: Tokens.Generic | undefined;\n\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== undefined) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n lastToken.raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n tokens.push(token);\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n this.infiniteLoopError(src.charCodeAt(0));\n break;\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n this.tokenizer.lexer = this;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match: RegExpExecArray | null = null;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) !== null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index)\n + '[' + 'a'.repeat(match[0].length - 2) + ']'\n + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) !== null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n // Mask out other blocks\n let offset;\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) !== null) {\n offset = match[2] ? match[2].length : 0;\n maskedSrc = maskedSrc.slice(0, match.index + offset) + '[' + 'a'.repeat(match[0].length - offset - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out blocks from extensions\n maskedSrc = this.options.hooks?.emStrongMask?.call({ lexer: this }, maskedSrc) ?? maskedSrc;\n\n let keepPrevChar = false;\n let prevChar = '';\n let srcLength = Infinity;\n while (src) {\n if (src.length < srcLength) {\n srcLength = src.length;\n } else {\n this.infiniteLoopError(src.charCodeAt(0));\n break;\n }\n\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n let token: Tokens.Generic | undefined;\n\n // extensions\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === 'text' && lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n this.infiniteLoopError(src.charCodeAt(0));\n break;\n }\n }\n\n return tokens;\n }\n\n private infiniteLoopError(byte: number) {\n const errMsg = 'Infinite loop on byte: ' + byte;\n if (this.options.silent) {\n console.error(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escapeHtmlEntities,\n} from './helpers.ts';\nimport { other } from './rules.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Tokens } from './Tokens.ts';\nimport type { _Parser } from './Parser.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n parser!: _Parser<ParserOutput, RendererOutput>; // set by the parser\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n space(token: Tokens.Space): RendererOutput {\n return '' as RendererOutput;\n }\n\n code({ text, lang, escaped }: Tokens.Code): RendererOutput {\n const langString = (lang || '').match(other.notSpaceStart)?.[0];\n\n const code = text.replace(other.endingNewline, '') + '\\n';\n\n if (!langString) {\n return '<pre><code>'\n + (escaped ? code : escapeHtmlEntities(code, true))\n + '</code></pre>\\n' as RendererOutput;\n }\n\n return '<pre><code class=\"language-'\n + escapeHtmlEntities(langString)\n + '\">'\n + (escaped ? code : escapeHtmlEntities(code, true))\n + '</code></pre>\\n' as RendererOutput;\n }\n\n blockquote({ tokens }: Tokens.Blockquote): RendererOutput {\n const body = this.parser.parse(tokens);\n return `<blockquote>\\n${body}</blockquote>\\n` as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n def(token: Tokens.Def): RendererOutput {\n return '' as RendererOutput;\n }\n\n heading({ tokens, depth }: Tokens.Heading): RendererOutput {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n` as RendererOutput;\n }\n\n hr(token: Tokens.Hr): RendererOutput {\n return '<hr>\\n' as RendererOutput;\n }\n\n list(token: Tokens.List): RendererOutput {\n const ordered = token.ordered;\n const start = token.start;\n\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n' as RendererOutput;\n }\n\n listitem(item: Tokens.ListItem): RendererOutput {\n return `<li>${this.parser.parse(item.tokens)}</li>\\n` as RendererOutput;\n }\n\n checkbox({ checked }: Tokens.Checkbox): RendererOutput {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"> ' as RendererOutput;\n }\n\n paragraph({ tokens }: Tokens.Paragraph): RendererOutput {\n return `<p>${this.parser.parseInline(tokens)}</p>\\n` as RendererOutput;\n }\n\n table(token: Tokens.Table): RendererOutput {\n let header = '';\n\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell as ParserOutput });\n\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n\n body += this.tablerow({ text: cell as ParserOutput });\n }\n if (body) body = `<tbody>${body}</tbody>`;\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n' as RendererOutput;\n }\n\n tablerow({ text }: Tokens.TableRow<ParserOutput>): RendererOutput {\n return `<tr>\\n${text}</tr>\\n` as RendererOutput;\n }\n\n tablecell(token: Tokens.TableCell): RendererOutput {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n` as RendererOutput;\n }\n\n /**\n * span level renderer\n */\n strong({ tokens }: Tokens.Strong): RendererOutput {\n return `<strong>${this.parser.parseInline(tokens)}</strong>` as RendererOutput;\n }\n\n em({ tokens }: Tokens.Em): RendererOutput {\n return `<em>${this.parser.parseInline(tokens)}</em>` as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return `<code>${escapeHtmlEntities(text, true)}</code>` as RendererOutput;\n }\n\n br(token: Tokens.Br): RendererOutput {\n return '<br>' as RendererOutput;\n }\n\n del({ tokens }: Tokens.Del): RendererOutput {\n return `<del>${this.parser.parseInline(tokens)}</del>` as RendererOutput;\n }\n\n link({ href, title, tokens }: Tokens.Link): RendererOutput {\n const text = this.parser.parseInline(tokens) as string;\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text as RendererOutput;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + (escapeHtmlEntities(title)) + '\"';\n }\n out += '>' + text + '</a>';\n return out as RendererOutput;\n }\n\n image({ href, title, text, tokens }: Tokens.Image): RendererOutput {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer) as string;\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escapeHtmlEntities(text) as RendererOutput;\n }\n href = cleanHref;\n\n let out = `<img src=\"${href}\" alt=\"${escapeHtmlEntities(text)}\"`;\n if (title) {\n out += ` title=\"${escapeHtmlEntities(title)}\"`;\n }\n out += '>';\n return out as RendererOutput;\n }\n\n text(token: Tokens.Text | Tokens.Escape): RendererOutput {\n return 'tokens' in token && token.tokens\n ? this.parser.parseInline(token.tokens) as unknown as RendererOutput\n : ('escaped' in token && token.escaped ? token.text as RendererOutput : escapeHtmlEntities(token.text) as RendererOutput);\n }\n}\n", "import type { Tokens } from './Tokens.ts';\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer<RendererOutput = string> {\n // no need for block level renderers\n strong({ text }: Tokens.Strong): RendererOutput {\n return text as RendererOutput;\n }\n\n em({ text }: Tokens.Em): RendererOutput {\n return text as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return text as RendererOutput;\n }\n\n del({ text }: Tokens.Del): RendererOutput {\n return text as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n link({ text }: Tokens.Link): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n image({ text }: Tokens.Image): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n br(): RendererOutput {\n return '' as RendererOutput;\n }\n\n checkbox({ raw }: Tokens.Checkbox): RendererOutput {\n return raw as RendererOutput;\n }\n}\n", "import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport type { MarkedToken, Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n renderer: _Renderer<ParserOutput, RendererOutput>;\n textRenderer: _TextRenderer<RendererOutput>;\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer<ParserOutput, RendererOutput>();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer<RendererOutput>();\n }\n\n /**\n * Static Parse Method\n */\n static parse<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const parser = new _Parser<ParserOutput, RendererOutput>(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const parser = new _Parser<ParserOutput, RendererOutput>(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[]): ParserOutput {\n this.renderer.parser = this;\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken as Tokens.Generic;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'def', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n break;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n break;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n break;\n }\n case 'code': {\n out += this.renderer.code(token);\n break;\n }\n case 'table': {\n out += this.renderer.table(token);\n break;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n break;\n }\n case 'list': {\n out += this.renderer.list(token);\n break;\n }\n case 'checkbox': {\n out += this.renderer.checkbox(token);\n break;\n }\n case 'html': {\n out += this.renderer.html(token);\n break;\n }\n case 'def': {\n out += this.renderer.def(token);\n break;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n break;\n }\n case 'text': {\n out += this.renderer.text(token);\n break;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out as ParserOutput;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer: _Renderer<ParserOutput, RendererOutput> | _TextRenderer<RendererOutput> = this.renderer): ParserOutput {\n this.renderer.parser = this;\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'checkbox': {\n out += renderer.checkbox(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out as ParserOutput;\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport class _Hooks<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n block?: boolean;\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n 'emStrongMask',\n ]);\n\n static passThroughHooksRespectAsync = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: ParserOutput) {\n return html;\n }\n\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens: Token[] | TokensList) {\n return tokens;\n }\n\n /**\n * Mask contents that should not be interpreted as em/strong delimiters\n */\n emStrongMask(src: string) {\n return src;\n }\n\n /**\n * Provide function to tokenize markdown\n */\n provideLexer(block = this.block) {\n return block ? _Lexer.lex : _Lexer.lexInline;\n }\n\n /**\n * Provide function to parse tokens\n */\n provideParser(block = this.block) {\n return block ? _Parser.parse<ParserOutput, RendererOutput> : _Parser.parseInline<ParserOutput, RendererOutput>;\n }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escapeHtmlEntities } from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, Tokens, TokensList } from './Tokens.ts';\n\nexport type MaybePromise = void | Promise<void>;\n\ntype UnknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked<ParserOutput = string, RendererOutput = string> {\n defaults = _getDefaults<ParserOutput, RendererOutput>();\n options = this.setOptions;\n\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n\n Parser = _Parser<ParserOutput, RendererOutput>;\n Renderer = _Renderer<ParserOutput, RendererOutput>;\n TextRenderer = _TextRenderer<RendererOutput>;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer<ParserOutput, RendererOutput>;\n Hooks = _Hooks<ParserOutput, RendererOutput>;\n\n constructor(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n let values: MaybePromise[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token as Tokens.Table;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token as Tokens.List;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token as Tokens.Generic;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity) as Token[] | TokensList;\n values = values.concat(this.walkTokens(tokens, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n const extensions: MarkedOptions<ParserOutput, RendererOutput>['extensions'] = this.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions<ParserOutput, RendererOutput>;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer<ParserOutput, RendererOutput>(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop as Exclude<keyof _Renderer<ParserOutput, RendererOutput>, 'options' | 'parser'>;\n const rendererFunc = pack.renderer[rendererProp] as GenericRendererFunction;\n const prevRenderer = renderer[rendererProp] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return (ret || '') as RendererOutput;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop as Exclude<keyof _Tokenizer<ParserOutput, RendererOutput>, 'options' | 'rules' | 'lexer'>;\n const tokenizerFunc = pack.tokenizer[tokenizerProp] as UnknownFunction;\n const prevTokenizer = tokenizer[tokenizerProp] as UnknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks<ParserOutput, RendererOutput>();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop as Exclude<keyof _Hooks<ParserOutput, RendererOutput>, 'options' | 'block'>;\n const hooksFunc = pack.hooks[hooksProp] as UnknownFunction;\n const prevHook = hooks[hooksProp] as UnknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg: unknown) => {\n if (this.defaults.async && _Hooks.passThroughHooksRespectAsync.has(prop)) {\n return (async() => {\n const ret = await hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n })();\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args: unknown[]) => {\n if (this.defaults.async) {\n return (async() => {\n let ret = await hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = await prevHook.apply(hooks, args);\n }\n return ret;\n })();\n }\n\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values: MaybePromise[] = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions<ParserOutput, RendererOutput>) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n lexer(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n\n parser(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n return _Parser.parse<ParserOutput, RendererOutput>(tokens, options ?? this.defaults);\n }\n\n private parseMarkdown(blockType: boolean) {\n type overloadedParse = {\n (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: true }): Promise<ParserOutput>;\n (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: false }): ParserOutput;\n (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): ParserOutput | Promise<ParserOutput>;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse: overloadedParse = (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): any => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n\n const throwError = this.onError(!!opt.silent, !!opt.async);\n\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n\n if (opt.async) {\n return (async() => {\n const processedSrc = opt.hooks ? await opt.hooks.preprocess(src) : src;\n const lexer = opt.hooks ? await opt.hooks.provideLexer(blockType) : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const tokens = await lexer(processedSrc, opt);\n const processedTokens = opt.hooks ? await opt.hooks.processAllTokens(tokens) : tokens;\n if (opt.walkTokens) {\n await Promise.all(this.walkTokens(processedTokens, opt.walkTokens));\n }\n const parser = opt.hooks ? await opt.hooks.provideParser(blockType) : (blockType ? _Parser.parse : _Parser.parseInline);\n const html = await parser(processedTokens, opt);\n return opt.hooks ? await opt.hooks.postprocess(html) : html;\n })().catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer(blockType) : (blockType ? _Lexer.lex : _Lexer.lexInline);\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n const parser = opt.hooks ? opt.hooks.provideParser(blockType) : (blockType ? _Parser.parse : _Parser.parseInline);\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch(e) {\n return throwError(e as Error);\n }\n };\n\n return parse;\n }\n\n private onError(silent: boolean, async: boolean) {\n return (e: Error): string | Promise<string> => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escapeHtmlEntities(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults,\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\nimport type { MaybePromise } from './Instance.ts';\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\n\n/**\n * Compiles markdown to HTML.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions.\n */\nexport function marked(src: string, options: MarkedOptions & { async: false }): string;\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\nexport function marked(src: string, options?: MarkedOptions | null): string | Promise<string>;\nexport function marked(src: string, opt?: MarkedOptions | null): string | Promise<string> {\n return markedInstance.parse(src, opt);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './Tokens.ts';\n", "import DOMPurify from 'dompurify';\r\nimport { marked } from 'marked';\r\nimport React from 'react';\r\n\r\nmarked.setOptions({\r\n pedantic: false,\r\n gfm: true,\r\n});\r\n\r\n/** Renders sanitized Markdown text as HTML. */\r\nexport function Markdown({ text, className }: { text: string; className?: string }) {\r\n const html = React.useMemo(() => {\r\n if (!text) return '';\r\n const parsed = marked.parse(text, { async: false });\r\n return DOMPurify.sanitize(typeof parsed === 'string' ? parsed : '');\r\n }, [text]);\r\n\r\n return <div className={className} dangerouslySetInnerHTML={{ __html: html }} />;\r\n}\r\n", "import { TimeoutError } from 'ky';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { apiErrorMsg, normalizeTags } from '@/util';\r\n\r\nimport * as api from '../api';\r\nimport { app } from '../globals';\r\nimport { useTagSuggestions } from '../hooks/useTagSuggestions';\r\nimport { useBookmarksStore } from '../stores/bookmarksStore';\r\nimport { TagSuggestionsDropdown } from './TagSuggestionsDropdown';\r\n\r\ntype BulkAction = 'read' | 'unread' | 'star' | 'unstar' | 'delete' | 'private' | 'public';\r\ntype BulkSelection = 'page' | 'all';\r\n\r\ninterface Props {\r\n bcount: number;\r\n}\r\n\r\ntype BulkValidationKey =\r\n | 'bulkEdit.pleaseAddSelection'\r\n | 'bulkEdit.pleaseChooseAction'\r\n | 'bulkEdit.tooManyTags';\r\n\r\nfunction disabledReason(\r\n selection: BulkSelection | null,\r\n action: BulkAction | null,\r\n addTags: string,\r\n removeTags: string,\r\n bcount: number,\r\n): BulkValidationKey | null {\r\n if (selection === null) return 'bulkEdit.pleaseAddSelection';\r\n if (!action && !addTags.trim() && !removeTags.trim()) return 'bulkEdit.pleaseChooseAction';\r\n if (bcount > 20000 && addTags.trim().split(/\\s+/).filter(Boolean).length > 10)\r\n return 'bulkEdit.tooManyTags';\r\n return null;\r\n}\r\n\r\nfunction navLink<T>(current: T | null, value: T, label: string, onClick: (v: T) => void) {\r\n return (\r\n <a\r\n href=\"#\"\r\n className={`dib mt1 link${current === value ? ' nav-active' : ' silver hover-alt'}`}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n onClick(value);\r\n }}\r\n >\r\n {label}\r\n </a>\r\n );\r\n}\r\n\r\nexport function BulkEdit({ bcount }: Props) {\r\n const { t } = useTranslation();\r\n const [visible, setVisible] = useState(false);\r\n const [selection, setSelection] = useState<BulkSelection | null>(null);\r\n const [action, setAction] = useState<BulkAction | null>(null);\r\n const [addTags, setAddTags] = useState('');\r\n const [removeTags, setRemoveTags] = useState('');\r\n const [submitting, setSubmitting] = useState(false);\r\n const [confirmDelete, setConfirmDelete] = useState(false);\r\n const [confirmPublic, setConfirmPublic] = useState(false);\r\n const [validationMsg, setValidationMsg] = useState<string | null>(null);\r\n const [errorFadingOut, setErrorFadingOut] = useState(false);\r\n const validationTimer = useRef<number | null>(null);\r\n const fadeTimer = useRef<number | null>(null);\r\n\r\n const a = app();\r\n const suggestEnabled = a.dat.suggestTags === true;\r\n const suggestUseReturnKey = a.dat.suggestTagsUseReturnKey !== false;\r\n const bulkFilter = a.dat.filter ?? { tag: 'FilterAll' as const };\r\n const bulkSharedp = a.dat.sharedp ?? 'all';\r\n const bulkTags = a.dat.tags ?? [];\r\n const bulkQuery = a.dat.query ?? null;\r\n\r\n const bmarks = useBookmarksStore((s) => s.bmarks);\r\n const bids = bmarks.map((b) => b.bid);\r\n const pageCount = bids.length;\r\n const selectionCount = selection === null ? 0 : selection === 'page' ? pageCount : bcount;\r\n\r\n const reason = disabledReason(selection, action, addTags, removeTags, bcount);\r\n const isVisuallyDisabled = submitting || reason !== null || confirmDelete || confirmPublic;\r\n\r\n const {\r\n tagInputRef: removeTagsRef,\r\n suggestionState: removeSuggestionState,\r\n closeSuggestions: closeRemoveSuggestions,\r\n onTagsChange: onRemoveTagsChange,\r\n onTagsKeyDown: onRemoveTagsKeyDown,\r\n onTagsSelect: onRemoveTagsSelect,\r\n onSuggestionHover: onRemoveSuggestionHover,\r\n onSuggestionPick: onRemoveSuggestionPick,\r\n } = useTagSuggestions({\r\n enabled: suggestEnabled && action !== 'delete',\r\n useReturnKey: suggestUseReturnKey,\r\n tags: removeTags,\r\n onTagsUpdate: setRemoveTags,\r\n });\r\n\r\n const {\r\n tagInputRef: addTagsRef,\r\n suggestionState: addSuggestionState,\r\n closeSuggestions: closeAddSuggestions,\r\n onTagsChange: onAddTagsChange,\r\n onTagsKeyDown: onAddTagsKeyDown,\r\n onTagsSelect: onAddTagsSelect,\r\n onSuggestionHover: onAddSuggestionHover,\r\n onSuggestionPick: onAddSuggestionPick,\r\n } = useTagSuggestions({\r\n enabled: suggestEnabled && action !== 'delete',\r\n useReturnKey: suggestUseReturnKey,\r\n tags: addTags,\r\n onTagsUpdate: setAddTags,\r\n });\r\n\r\n const clearValidationTimers = () => {\r\n if (validationTimer.current !== null) {\r\n window.clearTimeout(validationTimer.current);\r\n validationTimer.current = null;\r\n }\r\n if (fadeTimer.current !== null) {\r\n window.clearTimeout(fadeTimer.current);\r\n fadeTimer.current = null;\r\n }\r\n };\r\n\r\n const resetForm = () => {\r\n setSelection(null);\r\n setAction(null);\r\n setAddTags('');\r\n setRemoveTags('');\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n clearValidationTimers();\r\n };\r\n\r\n useEffect(() => {\r\n const el = document.getElementById('bulk-edit-toggle');\r\n if (!el) return;\r\n const handler = (e: Event) => {\r\n e.preventDefault();\r\n resetForm();\r\n setVisible((v) => !v);\r\n };\r\n el.addEventListener('click', handler);\r\n return () => {\r\n el.removeEventListener('click', handler);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const el = document.getElementById('bulk-edit-toggle');\r\n if (!el) return;\r\n el.classList.toggle('nav-active', visible);\r\n el.classList.toggle('silver', !visible);\r\n }, [visible]);\r\n\r\n useEffect(() => {\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n }, [action, selection]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearValidationTimers();\r\n };\r\n }, []);\r\n\r\n const showValidationMsg = (msg: string) => {\r\n clearValidationTimers();\r\n setErrorFadingOut(false);\r\n setValidationMsg(msg);\r\n validationTimer.current = window.setTimeout(() => {\r\n validationTimer.current = null;\r\n setErrorFadingOut(true);\r\n fadeTimer.current = window.setTimeout(() => {\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n fadeTimer.current = null;\r\n }, 5000);\r\n }, 3000);\r\n };\r\n\r\n const handleSubmit = async (\r\n e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>,\r\n ): Promise<void> => {\r\n e.preventDefault();\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n\r\n const addTagsTrimmed = normalizeTags(addTags);\r\n const removeTagsTrimmed = normalizeTags(removeTags);\r\n const r = disabledReason(selection, action, addTagsTrimmed, removeTagsTrimmed, bcount);\r\n if (r !== null) {\r\n showValidationMsg(t(r));\r\n return;\r\n }\r\n if (action === 'delete' && !confirmDelete) {\r\n setConfirmDelete(true);\r\n return;\r\n }\r\n if (action === 'public' && !confirmPublic) {\r\n setConfirmPublic(true);\r\n return;\r\n }\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setSubmitting(true);\r\n try {\r\n if (selection === null) return;\r\n const res = await api.bulkEdit(\r\n selection === 'page'\r\n ? {\r\n selection: 'page',\r\n bids,\r\n action,\r\n addTags: addTagsTrimmed,\r\n removeTags: removeTagsTrimmed,\r\n selectionCount,\r\n }\r\n : {\r\n selection: 'all',\r\n filter: bulkFilter,\r\n sharedp: bulkSharedp,\r\n tags: bulkTags,\r\n query: bulkQuery,\r\n action,\r\n addTags: addTagsTrimmed,\r\n removeTags: removeTagsTrimmed,\r\n selectionCount,\r\n },\r\n );\r\n if (res.ok) {\r\n window.location.reload();\r\n } else {\r\n showValidationMsg(apiErrorMsg(t, res.status, res.bodyText ?? ''));\r\n }\r\n } catch (err) {\r\n if (err instanceof TimeoutError) {\r\n showValidationMsg(t('error.requestTimedOut'));\r\n } else {\r\n showValidationMsg(t('error.networkError'));\r\n }\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n if (!visible) return null;\r\n\r\n const toggleAction = (v: BulkAction) => {\r\n setAction((cur) => (cur === v ? null : v));\r\n if (v === 'delete') {\r\n setAddTags('');\r\n setRemoveTags('');\r\n }\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={(e) => {\r\n void handleSubmit(e);\r\n }}\r\n className=\"w-100 mw7 pa2 bulk_bookmark_form mt1\"\r\n >\r\n <div className=\"mb2\">\r\n <div>\r\n <span className=\"fw7\">{t('bulkEdit.select')}</span>\r\n {selection !== null && (\r\n <span className=\"ml2\">\r\n {selectionCount === 1\r\n ? t('bulkEdit.oneBookmarkSelected')\r\n : t('bulkEdit.bookmarksSelected', { count: selectionCount })}\r\n </span>\r\n )}\r\n </div>\r\n <div>\r\n {navLink(selection, 'page', t('bulkEdit.thisPage'), setSelection)}\r\n {' \u2027 '}\r\n {navLink(selection, 'all', t('bulkEdit.allPages'), setSelection)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mb2\">\r\n <div>\r\n <span className=\"fw7\">{t('bulkEdit.action')}</span>\r\n </div>\r\n <div>\r\n {navLink(action, 'private', t('bulkEdit.makePrivate'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'public', t('bulkEdit.makePublic'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'read', t('bulkEdit.markAsRead'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'unread', t('bulkEdit.unread'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'star', t('bulkEdit.addStars'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'unstar', t('bulkEdit.removeStars'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'delete', t('delete'), toggleAction)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mb2\">\r\n <div>\r\n <span className={`fw7${normalizeTags(removeTags) ? ' nav-active' : ''}`}>\r\n {t('bulkEdit.removeTags')}\r\n </span>\r\n </div>\r\n <div className=\"relative\">\r\n <input\r\n ref={removeTagsRef}\r\n type=\"text\"\r\n className={`tags w-100 mb1 pt1 edit_form_input${action === 'delete' ? ' o-50 not-allowed' : ''}`}\r\n disabled={action === 'delete'}\r\n autoComplete=\"off\"\r\n autoCapitalize=\"off\"\r\n value={removeTags}\r\n onChange={onRemoveTagsChange}\r\n onKeyDown={onRemoveTagsKeyDown}\r\n onClick={onRemoveTagsSelect}\r\n onSelect={onRemoveTagsSelect}\r\n onBlur={() => {\r\n window.setTimeout(() => {\r\n closeRemoveSuggestions();\r\n }, 0);\r\n }}\r\n />\r\n {removeSuggestionState != null ? (\r\n <TagSuggestionsDropdown\r\n suggestionState={removeSuggestionState}\r\n onHover={onRemoveSuggestionHover}\r\n onPick={onRemoveSuggestionPick}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mb2\">\r\n <div>\r\n <span className={`fw7${normalizeTags(addTags) ? ' nav-active' : ''}`}>\r\n {t('bulkEdit.addTags')}\r\n </span>\r\n </div>\r\n <div className=\"relative\">\r\n <input\r\n ref={addTagsRef}\r\n type=\"text\"\r\n className={`tags w-100 mb1 pt1 edit_form_input${action === 'delete' ? ' o-50 not-allowed' : ''}`}\r\n disabled={action === 'delete'}\r\n autoComplete=\"off\"\r\n autoCapitalize=\"off\"\r\n value={addTags}\r\n onChange={onAddTagsChange}\r\n onKeyDown={onAddTagsKeyDown}\r\n onClick={onAddTagsSelect}\r\n onSelect={onAddTagsSelect}\r\n onBlur={() => {\r\n window.setTimeout(() => {\r\n closeAddSuggestions();\r\n }, 0);\r\n }}\r\n />\r\n {addSuggestionState != null ? (\r\n <TagSuggestionsDropdown\r\n suggestionState={addSuggestionState}\r\n onHover={onAddSuggestionHover}\r\n onPick={onAddSuggestionPick}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex items-center\">\r\n <button\r\n type=\"submit\"\r\n disabled={submitting || confirmDelete || confirmPublic}\r\n className={`mr2 pv1 ph2 thm-text-primary ba thm-border-default rdim${isVisuallyDisabled ? ' thm-bg-disabled not-allowed' : ' thm-bg-secondary pointer'}`}\r\n onClick={() => {\r\n if (reason !== null) showValidationMsg(t(reason));\r\n }}\r\n >\r\n {submitting ? t('bulkEdit.submitting') : t('bulkEdit.submit')}\r\n </button>{' '}\r\n <button\r\n type=\"button\"\r\n className=\"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n onClick={() => {\r\n resetForm();\r\n setVisible(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {validationMsg != null && (\r\n <span\r\n className=\"thm-text-error f6 ml2\"\r\n style={{\r\n opacity: errorFadingOut ? 0 : 1,\r\n transition: errorFadingOut ? 'opacity 5s' : 'none',\r\n }}\r\n >\r\n {validationMsg}\r\n </span>\r\n )}\r\n {confirmDelete && (\r\n <span className=\"f6 ml2\">\r\n <span className=\"mr2\">\r\n {selectionCount === 1\r\n ? t('bulkEdit.destroyOne')\r\n : t('bulkEdit.destroyMany', { count: selectionCount })}\r\n </span>\r\n <span className=\"nowrap\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setConfirmDelete(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {' / '}\r\n <button type=\"submit\" className=\"thm-text-error\">\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </span>\r\n )}\r\n {confirmPublic && (\r\n <span className=\"f6 ml2\">\r\n <span className=\"mr2\">\r\n {selectionCount === 1\r\n ? t('bulkEdit.publicOne')\r\n : t('bulkEdit.publicMany', { count: selectionCount })}\r\n </span>\r\n <span className=\"nowrap\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setConfirmPublic(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {' / '}\r\n <button type=\"submit\" className=\"thm-text-error\">\r\n {t('bulkEdit.makePublic')}\r\n </button>\r\n </span>\r\n </span>\r\n )}\r\n </div>\r\n </form>\r\n );\r\n}\r\n", "import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { app, fromNow, shdatetime } from '../globals';\r\nimport type { Note } from '../types';\r\nimport { fromNullableStr } from '../util';\r\n\r\nfunction toTextareaPreview(input: string) {\r\n const lines = input.split('\\n');\r\n return (\r\n <>\r\n {lines[0]}\r\n {lines.slice(1).map((x, idx) => (\r\n <React.Fragment key={idx}>\r\n <br />\r\n {x}\r\n </React.Fragment>\r\n ))}\r\n </>\r\n );\r\n}\r\n\r\n/** Renders a list of note summaries with links to individual notes. */\r\nexport function NList({ initial }: { initial: Note[] }) {\r\n const { t } = useTranslation();\r\n const a = app();\r\n const previewNotes = a.dat.previewNotes !== false;\r\n const linkToFilterSingle = (slug: string) => `${fromNullableStr(a.userR)}/notes/${slug}`;\r\n\r\n return (\r\n <div>\r\n {initial.map((note) => {\r\n const fromNowVal = React.useMemo(\r\n () => fromNow(a.lang, note.created),\r\n [a.lang, note.created],\r\n );\r\n return (\r\n <div\r\n key={note.id}\r\n id={String(note.id)}\r\n className={`note w-100 mw7 pa1 mb2${note.shared ? '' : ' private'}`}\r\n >\r\n <div className=\"display\">\r\n <a href={linkToFilterSingle(note.slug)} className=\"link note-link f5 lh-title\">\r\n {note.title === '' ? t('noTitle') : note.title}\r\n </a>\r\n <br />\r\n {previewNotes ? (\r\n <div className=\"description mt1 thm-text-secondary\">\r\n {toTextareaPreview(note.text.slice(0, 200))}\r\n </div>\r\n ) : null}\r\n <a\r\n className=\"link note-link f7 dib thm-text-tertiary w4\"\r\n data-created={note.created}\r\n title={shdatetime(a.lang, note.created)}\r\n href={linkToFilterSingle(note.slug)}\r\n >\r\n {fromNowVal}\r\n </a>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n", "import { TimeoutError } from 'ky';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { destroyNote, editNote } from '../api';\r\nimport { app, closeWindow, fromNow, setFocus, shdatetime } from '../globals';\r\nimport type { Note } from '../types';\r\nimport { apiErrorMsg, curQuerystring, fromNullableStr, lookupQueryStringValue } from '../util';\r\nimport { Markdown } from './Markdown';\r\n\r\nfunction toTextarea(input: string) {\r\n const lines = input.split('\\n');\r\n return (\r\n <>\r\n {lines[0]}\r\n {lines.slice(1).map((x, idx) => (\r\n <React.Fragment key={idx}>\r\n <br />\r\n {x}\r\n </React.Fragment>\r\n ))}\r\n </>\r\n );\r\n}\r\n\r\n/** Displays a single note with inline editing and deletion, used in the popup window. */\r\nexport function NNote({ initial }: { initial: Note }) {\r\n const { t } = useTranslation();\r\n const a = app();\r\n\r\n const [note, setNote] = React.useState<Note>(initial);\r\n const [editNoteState, setEditNoteState] = React.useState<Note>(initial);\r\n const [deleteAsk, setDeleteAsk] = React.useState(false);\r\n const [edit, setEdit] = React.useState(initial.id <= 0);\r\n const [destroyed, setDestroyed] = React.useState(false);\r\n const [apiError, setApiError] = React.useState<string | null>(null);\r\n const fromNowVal = fromNow(a.lang, note.created);\r\n\r\n const notetextid = `${note.id.toString()}_text`;\r\n\r\n function startEdit(next: boolean) {\r\n setEditNoteState(note);\r\n setEdit(next);\r\n const qs = curQuerystring();\r\n const q = lookupQueryStringValue(qs, 'next');\r\n if (!next && q === 'closeWindow') closeWindow(window);\r\n else if (next) setFocus(notetextid);\r\n }\r\n\r\n async function onDestroy() {\r\n try {\r\n const res = await destroyNote(note.id);\r\n if (!res.ok) {\r\n setApiError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n setDestroyed(true);\r\n } catch (err) {\r\n setApiError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n }\r\n\r\n const onSubmit = async (e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>): Promise<void> => {\r\n e.preventDefault();\r\n setApiError(null);\r\n try {\r\n const res = await editNote(editNoteState);\r\n if (res.ok && res.status >= 200 && res.status < 300) {\r\n const qs = curQuerystring();\r\n const next = lookupQueryStringValue(qs, 'next');\r\n const ref = document.referrer;\r\n const org = window.location.origin;\r\n\r\n if (next === 'closeWindow') closeWindow(window);\r\n else if (next === 'back') {\r\n if (ref.startsWith(org)) window.location.href = ref;\r\n else window.location.href = org;\r\n } else if (editNoteState.id === 0) {\r\n window.location.href = fromNullableStr(a.noteR);\r\n } else if (res.note) {\r\n setNote(res.note);\r\n setEditNoteState(res.note);\r\n setEdit(false);\r\n }\r\n } else {\r\n setApiError(apiErrorMsg(t, res.status, res.bodyText));\r\n }\r\n } catch (err) {\r\n setApiError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n };\r\n\r\n if (destroyed) return <p className=\"thm-text-error\">{t('note.killed')}</p>;\r\n\r\n return (\r\n <div id={String(note.id)} className=\"note w-100 mw7 pa1 mb2\">\r\n {apiError ? <div className=\"alert alert-err mb2\">{apiError}</div> : null}\r\n {!edit ? (\r\n <>\r\n {a.dat.isowner ? (\r\n <div className=\"edit_links db mb3\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n startEdit(true);\r\n }}\r\n className=\"edit thm-text-muted thm-hover-link-color\"\r\n >\r\n {t('edit')} \r\n </button>\r\n </div>\r\n ) : null}\r\n\r\n <div className=\"display\">\r\n <div className=\"link f5 lh-title\">{note.title === '' ? t('noTitle') : note.title}</div>\r\n <br />\r\n {note.isMarkdown ? (\r\n <div className=\"description mt1\">\r\n <Markdown text={note.text} />\r\n </div>\r\n ) : (\r\n <div className=\"description mt1 thm-text-secondary\">{toTextarea(note.text)}</div>\r\n )}\r\n <div className=\"link f7 mt2 dib thm-text-tertiary w4\">\r\n <span data-created={note.created} title={shdatetime(a.lang, note.created)}>\r\n {fromNowVal}\r\n </span>\r\n {' - '}\r\n <span className=\"thm-text-tertiary\">\r\n {note.shared ? t('filter.public') : t('filter.private')}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n {a.dat.isowner ? (\r\n <div className=\"edit_links db mt3\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n startEdit(true);\r\n }}\r\n className=\"edit thm-text-muted thm-hover-link-color\"\r\n >\r\n {t('edit')} \r\n </button>\r\n <div className=\"delete_link di\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(true);\r\n }}\r\n className={`delete thm-text-muted thm-hover-link-color${deleteAsk ? ' dn' : ''}`}\r\n >\r\n {t('delete')}\r\n </button>\r\n <span className={`confirm thm-text-error${!deleteAsk ? ' dn' : ''}`}>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(false);\r\n }}\r\n >\r\n {t('cancel')} / \r\n </button>\r\n <button type=\"button\" onClick={() => void onDestroy()} className=\"thm-text-error\">\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n ) : null}\r\n </>\r\n ) : (\r\n <form\r\n onSubmit={(e) => {\r\n void onSubmit(e);\r\n }}\r\n >\r\n <p className=\"mt2 mb1\">{t('note.titleLabel')}</p>\r\n <input\r\n type=\"text\"\r\n className=\"title w-100 mb1 pt1 edit_form_input\"\r\n name=\"title\"\r\n value={editNoteState.title}\r\n onChange={(e) => {\r\n setEditNoteState((x) => ({ ...x, title: e.target.value }));\r\n }}\r\n autoFocus={editNoteState.title === ''}\r\n />\r\n <br />\r\n <p className=\"mt2 mb1\">{t('note.descriptionLabel')}</p>\r\n <textarea\r\n id={notetextid}\r\n className=\"description w-100 mb1 pt1 edit_form_input\"\r\n name=\"text\"\r\n rows={25}\r\n value={editNoteState.text}\r\n onChange={(e) => {\r\n setEditNoteState((x) => ({ ...x, text: e.target.value }));\r\n }}\r\n />\r\n <div className=\"edit_form_checkboxes mb3\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"is-markdown pointer\"\r\n id=\"edit_ismarkdown\"\r\n name=\"ismarkdown\"\r\n checked={editNoteState.isMarkdown}\r\n onChange={(e) => {\r\n setEditNoteState((x) => ({ ...x, isMarkdown: e.target.checked }));\r\n }}\r\n />{' '}\r\n <label htmlFor=\"edit_ismarkdown\" className=\"mr2\">\r\n {t('note.useMarkdown')}\r\n </label>\r\n <br />\r\n </div>\r\n <div className=\"edit_form_checkboxes mb3\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"is-markdown pointer\"\r\n id=\"edit_shared\"\r\n name=\"shared\"\r\n checked={editNoteState.shared}\r\n onChange={(e) => {\r\n setEditNoteState((x) => ({ ...x, shared: e.target.checked }));\r\n }}\r\n />{' '}\r\n <label htmlFor=\"edit_shared\" className=\"mr2\">\r\n {t('note.publicLabel')}\r\n </label>\r\n <br />\r\n </div>\r\n <input\r\n type=\"submit\"\r\n className=\"mr1 pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n value={t('save')}\r\n />{' '}\r\n <input\r\n type=\"reset\"\r\n className=\"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n value={t('cancel')}\r\n onClick={() => {\r\n startEdit(false);\r\n }}\r\n />\r\n </form>\r\n )}\r\n </div>\r\n );\r\n}\r\n", "import { TimeoutError } from 'ky';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { apiErrorMsg } from '@/util';\r\n\r\nimport * as api from '../api';\r\nimport { app } from '../globals';\r\nimport type { NoteBulkAction } from '../types';\r\n\r\ntype BulkSelection = 'page' | 'all';\r\n\r\ninterface Props {\r\n ncount: number;\r\n}\r\n\r\ntype BulkValidationKey = 'bulkEditNotes.pleaseAddSelection' | 'bulkEditNotes.pleaseChooseAction';\r\n\r\nfunction disabledReason(\r\n selection: BulkSelection | null,\r\n action: NoteBulkAction | null,\r\n): BulkValidationKey | null {\r\n if (selection === null) return 'bulkEditNotes.pleaseAddSelection';\r\n if (!action) return 'bulkEditNotes.pleaseChooseAction';\r\n return null;\r\n}\r\n\r\nfunction navLink<T>(current: T | null, value: T, label: string, onClick: (v: T) => void) {\r\n return (\r\n <a\r\n href=\"#\"\r\n className={`dib mt1 link${current === value ? ' nav-active' : ' silver hover-alt'}`}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n onClick(value);\r\n }}\r\n >\r\n {label}\r\n </a>\r\n );\r\n}\r\n\r\nexport function NoteBulkEdit({ ncount }: Props) {\r\n const { t } = useTranslation();\r\n const [visible, setVisible] = useState(false);\r\n const [selection, setSelection] = useState<BulkSelection | null>(null);\r\n const [action, setAction] = useState<NoteBulkAction | null>(null);\r\n const [submitting, setSubmitting] = useState(false);\r\n const [confirmDelete, setConfirmDelete] = useState(false);\r\n const [confirmPublic, setConfirmPublic] = useState(false);\r\n const [validationMsg, setValidationMsg] = useState<string | null>(null);\r\n const [errorFadingOut, setErrorFadingOut] = useState(false);\r\n const validationTimer = useRef<number | null>(null);\r\n const fadeTimer = useRef<number | null>(null);\r\n\r\n const a = app();\r\n const bulkQuery = a.dat.query ?? null;\r\n const bulkSharedp = a.dat.sharedp ?? 'all';\r\n\r\n const nids = (a.dat.notes ?? []).map((n) => n.id);\r\n const pageCount = nids.length;\r\n const selectionCount = selection === null ? 0 : selection === 'page' ? pageCount : ncount;\r\n\r\n const reason = disabledReason(selection, action);\r\n const isVisuallyDisabled = submitting || reason !== null || confirmDelete || confirmPublic;\r\n\r\n const clearValidationTimers = () => {\r\n if (validationTimer.current !== null) {\r\n window.clearTimeout(validationTimer.current);\r\n validationTimer.current = null;\r\n }\r\n if (fadeTimer.current !== null) {\r\n window.clearTimeout(fadeTimer.current);\r\n fadeTimer.current = null;\r\n }\r\n };\r\n\r\n const resetForm = () => {\r\n setSelection(null);\r\n setAction(null);\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n clearValidationTimers();\r\n };\r\n\r\n useEffect(() => {\r\n const el = document.getElementById('bulk-edit-toggle');\r\n if (!el) return;\r\n const handler = (e: Event) => {\r\n e.preventDefault();\r\n resetForm();\r\n setVisible((v) => !v);\r\n };\r\n el.addEventListener('click', handler);\r\n return () => {\r\n el.removeEventListener('click', handler);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const el = document.getElementById('bulk-edit-toggle');\r\n if (!el) return;\r\n el.classList.toggle('nav-active', visible);\r\n el.classList.toggle('silver', !visible);\r\n }, [visible]);\r\n\r\n useEffect(() => {\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n }, [action, selection]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearValidationTimers();\r\n };\r\n }, []);\r\n\r\n const showValidationMsg = (msg: string) => {\r\n clearValidationTimers();\r\n setErrorFadingOut(false);\r\n setValidationMsg(msg);\r\n validationTimer.current = window.setTimeout(() => {\r\n validationTimer.current = null;\r\n setErrorFadingOut(true);\r\n fadeTimer.current = window.setTimeout(() => {\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n fadeTimer.current = null;\r\n }, 5000);\r\n }, 3000);\r\n };\r\n\r\n const handleSubmit = async (\r\n e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>,\r\n ): Promise<void> => {\r\n e.preventDefault();\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n\r\n const r = disabledReason(selection, action);\r\n if (r !== null) {\r\n showValidationMsg(t(r));\r\n return;\r\n }\r\n if (action === 'delete' && !confirmDelete) {\r\n setConfirmDelete(true);\r\n return;\r\n }\r\n if (action === 'public' && !confirmPublic) {\r\n setConfirmPublic(true);\r\n return;\r\n }\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setSubmitting(true);\r\n try {\r\n if (selection === null || action === null) return;\r\n const res = await api.noteBulkEdit(\r\n selection === 'page'\r\n ? {\r\n selection: 'page',\r\n nids,\r\n action,\r\n selectionCount,\r\n }\r\n : {\r\n selection: 'all',\r\n sharedp: bulkSharedp,\r\n query: bulkQuery,\r\n action,\r\n selectionCount,\r\n },\r\n );\r\n if (res.ok) {\r\n window.location.reload();\r\n } else {\r\n showValidationMsg(apiErrorMsg(t, res.status, res.bodyText ?? ''));\r\n }\r\n } catch (err) {\r\n if (err instanceof TimeoutError) {\r\n showValidationMsg(t('error.requestTimedOut'));\r\n } else {\r\n showValidationMsg(t('error.networkError'));\r\n }\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n if (!visible) return null;\r\n\r\n const toggleAction = (v: NoteBulkAction) => {\r\n setAction((cur) => (cur === v ? null : v));\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={(e) => {\r\n void handleSubmit(e);\r\n }}\r\n className=\"w-100 mw7 pa2 bulk_bookmark_form mt1\"\r\n >\r\n <div className=\"mb2\">\r\n <div>\r\n <span className=\"fw7\">{t('bulkEdit.select')}</span>\r\n {selection !== null && (\r\n <span className=\"ml2\">\r\n {selectionCount === 1\r\n ? t('bulkEditNotes.oneNoteSelected')\r\n : t('bulkEditNotes.notesSelected', { count: selectionCount })}\r\n </span>\r\n )}\r\n </div>\r\n <div>\r\n {navLink(selection, 'page', t('bulkEdit.thisPage'), setSelection)}\r\n {' \u2027 '}\r\n {navLink(selection, 'all', t('bulkEdit.allPages'), setSelection)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mb2\">\r\n <div>\r\n <span className=\"fw7\">{t('bulkEdit.action')}</span>\r\n </div>\r\n <div>\r\n {navLink(action, 'private', t('bulkEdit.makePrivate'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'public', t('bulkEdit.makePublic'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'markdown', t('bulkEditNotes.useMarkdown'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'plaintext', t('bulkEditNotes.usePlaintext'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'delete', t('delete'), toggleAction)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex items-center\">\r\n <button\r\n type=\"submit\"\r\n disabled={submitting || confirmDelete || confirmPublic}\r\n className={`mr2 pv1 ph2 thm-text-primary ba thm-border-default rdim${isVisuallyDisabled ? ' thm-bg-disabled not-allowed' : ' thm-bg-secondary pointer'}`}\r\n onClick={() => {\r\n if (reason !== null) showValidationMsg(t(reason));\r\n }}\r\n >\r\n {submitting ? t('bulkEdit.submitting') : t('bulkEdit.submit')}\r\n </button>{' '}\r\n <button\r\n type=\"button\"\r\n className=\"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n onClick={() => {\r\n resetForm();\r\n setVisible(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {validationMsg != null && (\r\n <span\r\n className=\"thm-text-error f6 ml2\"\r\n style={{\r\n opacity: errorFadingOut ? 0 : 1,\r\n transition: errorFadingOut ? 'opacity 5s' : 'none',\r\n }}\r\n >\r\n {validationMsg}\r\n </span>\r\n )}\r\n {confirmDelete && (\r\n <span className=\"f6 ml2\">\r\n <span className=\"mr2\">\r\n {selectionCount === 1\r\n ? t('bulkEditNotes.destroyOne')\r\n : t('bulkEditNotes.destroyMany', { count: selectionCount })}\r\n </span>\r\n <span className=\"nowrap\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setConfirmDelete(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {' / '}\r\n <button type=\"submit\" className=\"thm-text-error\">\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </span>\r\n )}\r\n {confirmPublic && (\r\n <span className=\"f6 ml2\">\r\n <span className=\"mr2\">\r\n {selectionCount === 1\r\n ? t('bulkEditNotes.publicOne')\r\n : t('bulkEditNotes.publicMany', { count: selectionCount })}\r\n </span>\r\n <span className=\"nowrap\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setConfirmPublic(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {' / '}\r\n <button type=\"submit\" className=\"thm-text-error\">\r\n {t('bulkEdit.makePublic')}\r\n </button>\r\n </span>\r\n </span>\r\n )}\r\n </div>\r\n </form>\r\n );\r\n}\r\n", "import React from 'react';\n\nimport { getTagCloud, updateTagCloudMode } from '../api';\nimport { app } from '../globals';\nimport { useTagCloudStore } from '../stores/tagCloudStore';\nimport {\n isExpanded,\n setExpanded,\n type TagCloud,\n type TagCloudModeBrowse,\n type TagCloudModeF,\n tagCloudModeFromF,\n type TagCloudModeRelated,\n} from '../types';\nimport { encodeTag, fromNullableStr } from '../util';\n\n/** Binds click handlers on the server-rendered tag cloud header (mode/filter controls) to the tag cloud store. */\nexport function bindTagCloudHeader(renderElSelector: string) {\n return () => {\n const container = document.querySelector<HTMLElement>(renderElSelector);\n if (!container) return;\n\n container.addEventListener('click', (e) => {\n const target = (e.target as HTMLElement).closest<HTMLElement>('[data-tcm-action]');\n if (!target || !container.contains(target)) return;\n const parsed = readTagCloudHeaderAction(target);\n if (!parsed) return;\n e.preventDefault();\n\n const mode = useTagCloudStore.getState().mode;\n\n if (parsed.action === 'toggleExpand') {\n void applyTagCloudMode(setExpanded(mode, !isExpanded(mode)));\n return;\n }\n\n if (parsed.action === 'top' || parsed.action === 'lowerBound') {\n const next: TagCloudModeBrowse =\n parsed.action === 'top'\n ? { kind: 'top', expanded: isExpanded(mode) }\n : { kind: 'lowerBound', expanded: isExpanded(mode), value: parsed.value };\n const isActive =\n (next.kind === 'top' && mode.kind === 'top') ||\n (next.kind === 'lowerBound' && mode.kind === 'lowerBound' && mode.value === next.value);\n void applyTagCloudMode(\n isActive ? setExpanded(mode, !isExpanded(mode)) : setExpanded(next, true),\n );\n return;\n }\n\n const relatedTags = currentRelatedTags(mode);\n const next: TagCloudModeRelated =\n parsed.action === 'related'\n ? { kind: 'related', expanded: isExpanded(mode), value: relatedTags }\n : {\n kind: 'relatedLowerBound',\n expanded: isExpanded(mode),\n value: relatedTags,\n lowerBound: parsed.lowerBound,\n };\n const isActive =\n (next.kind === 'related' && mode.kind === 'related') ||\n (next.kind === 'relatedLowerBound' &&\n mode.kind === 'relatedLowerBound' &&\n mode.lowerBound === next.lowerBound);\n void applyTagCloudMode(\n isActive ? setExpanded(mode, !isExpanded(mode)) : setExpanded(next, true),\n );\n });\n\n function updateHeaderUI(mode: TagCloudModeF) {\n if (!container) return;\n if (mode.kind === 'none') return;\n container.querySelectorAll<HTMLElement>('[data-tcm-action]').forEach((btn) => {\n const parsed = readTagCloudHeaderAction(btn);\n if (!parsed) return;\n switch (parsed.action) {\n case 'top':\n btn.classList.toggle('b', mode.kind === 'top');\n return;\n case 'lowerBound':\n btn.classList.toggle('b', mode.kind === 'lowerBound' && mode.value === parsed.value);\n return;\n case 'related':\n btn.classList.toggle('b', mode.kind === 'related');\n return;\n case 'relatedLowerBound':\n btn.classList.toggle(\n 'b',\n mode.kind === 'relatedLowerBound' && mode.lowerBound === parsed.lowerBound,\n );\n return;\n case 'toggleExpand': {\n const label = isExpanded(mode) ? btn.dataset.hideLabel : btn.dataset.showLabel;\n if (label !== undefined) btn.textContent = label;\n return;\n }\n }\n });\n }\n\n useTagCloudStore.subscribe((state) => {\n updateHeaderUI(state.mode);\n });\n };\n}\n\ntype TagCloudHeaderAction =\n | { action: 'top' }\n | { action: 'lowerBound'; value: number }\n | { action: 'related' }\n | { action: 'relatedLowerBound'; lowerBound: number }\n | { action: 'toggleExpand' };\n\nfunction readTagCloudHeaderAction(el: HTMLElement): TagCloudHeaderAction | null {\n switch (el.dataset.tcmAction) {\n case 'top':\n return { action: 'top' };\n case 'lowerBound':\n return { action: 'lowerBound', value: Number(el.dataset.tcmValue) };\n case 'related':\n return { action: 'related' };\n case 'relatedLowerBound':\n return { action: 'relatedLowerBound', lowerBound: Number(el.dataset.tcmLb) };\n case 'toggleExpand':\n return { action: 'toggleExpand' };\n default:\n return null;\n }\n}\n\nasync function applyTagCloudMode(next: TagCloudModeF) {\n useTagCloudStore.getState().setMode(next);\n if (app().dat.isowner) {\n await updateTagCloudMode(tagCloudModeFromF(next));\n }\n}\n\nfunction currentRelatedTags(mode: TagCloudModeF): string[] {\n return mode.kind === 'related' || mode.kind === 'relatedLowerBound' ? mode.value : [];\n}\n\n/** Displays the tag cloud body (the list of tag links). The header (mode/filter controls) is server-rendered; see bindTagCloudHeader. */\nexport function TagCloudBody({ initialMode }: { initialMode: TagCloudModeF }) {\n const mode = useTagCloudStore((s) => s.mode);\n const tagcloud = useTagCloudStore((s) => s.tagcloud);\n const setMode = useTagCloudStore((s) => s.setMode);\n const setTagCloud = useTagCloudStore((s) => s.setTagCloud);\n\n React.useEffect(() => {\n setMode(initialMode);\n }, [initialMode]);\n\n React.useEffect(() => {\n async function fetchTagCloud(m: TagCloudModeF) {\n if (m.kind === 'none') return;\n const tc = await getTagCloud(tagCloudModeFromF(m));\n setTagCloud(tc ?? {});\n }\n void fetchTagCloud(mode);\n }, [mode, setTagCloud]);\n\n if (mode.kind === 'none' || !isExpanded(mode)) return null;\n\n const curtags = mode.kind === 'related' || mode.kind === 'relatedLowerBound' ? mode.value : [];\n\n return <div className=\"tag_cloud_body\">{renderLinks(curtags, tagcloud)}</div>;\n}\n\nfunction renderLinks(curtags: string[], tagcloud: TagCloud) {\n const a = app();\n const cur = curtags.map((tag) => tag.toLowerCase());\n\n const linkToFilterTag = (rest: string) =>\n `${fromNullableStr(a.userR)}${rest === '' ? '' : `/t:${rest}`}`;\n\n const tagCounts = Object.values(tagcloud);\n const cMin = tagCounts.length ? Math.min(...tagCounts) : 1;\n const cMax = tagCounts.length ? Math.max(...tagCounts) : 1;\n\n return Object.entries(tagcloud)\n .sort((x, y) => x[0].toLowerCase().localeCompare(y[0].toLowerCase()))\n .map(([tag, c]) => {\n const kLower = tag.toLowerCase();\n const fontsize = rescale((x) => Math.log(1.0 + x), c, cMin, cMax, 100.0, 133.0);\n const opacity = rescale((x) => Math.log(1.0 + x), c, cMin, cMax, 0.6, 1.0);\n const style: React.CSSProperties = { fontSize: `${fontsize.toString()}%`, opacity };\n\n const includeExcludeLink =\n cur.length === 0 ? null : !cur.includes(kLower) ? (\n <a\n href={linkToFilterTag(cur.concat([kLower]).map(encodeTag).join('+'))}\n className=\"link mr2 tag-include\"\n >\n \u2295\n </a>\n ) : (\n <a\n href={linkToFilterTag(\n cur\n .filter((t) => t !== kLower)\n .map(encodeTag)\n .join('+'),\n )}\n className=\"link mr2 tag-exclude\"\n >\n \u2296\n </a>\n );\n\n return (\n <React.Fragment key={tag}>\n <a href={linkToFilterTag(encodeTag(tag))} className=\"link tag mr1\" style={style}>\n {tag}\n </a>\n {includeExcludeLink}\n </React.Fragment>\n );\n });\n}\n\n/** Rescales a value v in the range [n, m] to a value in the range [l, h] using a function f.\n * @param f - The function to apply to the value.\n * @param v - The value to rescale.\n * @param n - The minimum of the input range.\n * @param m - The maximum of the input range.\n * @param l - The minimum of the output range.\n * @param h - The maximum of the output range.\n * @returns The rescaled value.\n */\nfunction rescale(\n f: (x: number) => number,\n v: number,\n n: number,\n m: number,\n l: number,\n h: number,\n): number {\n const denom = f(m - n);\n const ratio = m - n < 0.01 || denom === 0 ? 1.0 : f(v - n) / denom;\n return ratio * (h - l) + l;\n}\n", "import { create } from 'zustand';\n\nimport type { TagCloud, TagCloudModeF } from '../types';\n\nexport type TagCloudState = {\n mode: TagCloudModeF;\n tagcloud: TagCloud;\n setMode: (mode: TagCloudModeF) => void;\n setTagCloud: (tagcloud: TagCloud) => void;\n};\n\nexport const useTagCloudStore = create<TagCloudState>((set) => ({\n mode: { kind: 'none' },\n tagcloud: {},\n setMode: (mode) => {\n set({ mode });\n },\n setTagCloud: (tagcloud) => {\n set({ tagcloud });\n },\n}));\n", "/** User's preferred color scheme. */\r\nexport type ColorSchemePreference = 'light' | 'dark';\r\n\r\n/** Unique identifier for a bookmark. */\r\nexport type BookmarkId = number;\r\n\r\nexport type Bookmark = {\r\n /** The bookmarked URL. */\r\n url: string;\r\n /** Display title of the bookmark. */\r\n title: string;\r\n /** Optional user-provided description. */\r\n description: string;\r\n /** Space-separated list of tags. */\r\n tags: string;\r\n /** Whether the bookmark is private (not visible to others). */\r\n private: boolean;\r\n /** Whether the bookmark is marked for later reading. */\r\n toread: boolean;\r\n /** Whether the bookmark should be archived (request). */\r\n archiveRequested?: boolean | null;\r\n /** Database ID of the bookmark. */\r\n bid: BookmarkId;\r\n /** URL-friendly slug for the bookmark. */\r\n slug: string;\r\n /** Whether the bookmark is starred. */\r\n selected: boolean;\r\n /** ISO 8601 creation timestamp. */\r\n time: string;\r\n /** URL of the archived copy, or null if not archived. */\r\n archiveUrl: string | null;\r\n};\r\n\r\n/** Unique identifier for a note. */\r\nexport type NoteId = number;\r\n/** URL-friendly slug for a note. */\r\nexport type NoteSlug = string;\r\n\r\nexport type Note = {\r\n /** Database ID of the note. */\r\n id: NoteId;\r\n /** URL-friendly slug for the note. */\r\n slug: NoteSlug;\r\n /** Display title of the note. */\r\n title: string;\r\n /** Raw text content of the note. */\r\n text: string;\r\n /** Character length of the note text. */\r\n length: number;\r\n /** Whether the note body should be rendered as Markdown. */\r\n isMarkdown: boolean;\r\n /** Whether the note is publicly visible. */\r\n shared: boolean;\r\n /** ISO 8601 creation timestamp. */\r\n created: string;\r\n /** ISO 8601 last-updated timestamp. */\r\n updated: string;\r\n};\r\n\r\nexport type Filter =\r\n | { tag: 'FilterAll' }\r\n | { tag: 'FilterUnread' }\r\n | { tag: 'FilterUntagged' }\r\n | { tag: 'FilterStarred' }\r\n | { tag: 'FilterSingle'; contents: string };\r\n\r\nexport type AccountSettings = {\r\n /** Whether bookmarks are archived by default. */\r\n archiveDefault: boolean;\r\n /** Whether new bookmarks are private by default. */\r\n privateDefault: boolean;\r\n /** Whether tag suggestions are enabled. */\r\n suggestTags: boolean;\r\n /** Whether the Return key applies a tag suggestion (Tab always does). */\r\n suggestTagsUseReturnKey: boolean;\r\n /** Whether the account is locked to private-only mode. */\r\n privacyLock: boolean;\r\n /** Whether the tag cloud is visible to non-authenticated visitors. */\r\n publicTagCloud: boolean;\r\n /** Whether note listings show a text preview, or just the title. */\r\n previewNotes: boolean;\r\n /** Whether the archive backend is enabled. */\r\n archiveBackendEnabled: boolean;\r\n /** Whether the user currently has an API key set. */\r\n hasApiKey: boolean;\r\n /** The user's preferred language (null means server default). */\r\n language: string | null;\r\n};\r\n\r\n/** A single tag suggestion with its usage count. */\r\nexport type TSuggestion = {\r\n term: string;\r\n count: number;\r\n};\r\n\r\n/** Request payload for fetching tag suggestions based on a query and current tags. */\r\nexport type TagSuggestionRequest = {\r\n query: string;\r\n currentTags: string[];\r\n};\r\n\r\n/** Response payload containing a list of tag suggestions. */\r\nexport type TagSuggestionResponse = {\r\n suggestions: TSuggestion[];\r\n};\r\n\r\nexport type BulkAction = 'read' | 'unread' | 'star' | 'unstar' | 'delete' | 'private' | 'public';\r\nexport type SharedP = 'all' | 'public' | 'private';\r\n\r\ntype BulkEditRequestBase = {\r\n action: BulkAction | null;\r\n addTags: string;\r\n removeTags: string;\r\n selectionCount: number;\r\n};\r\n\r\nexport type BulkEditRequest =\r\n | (BulkEditRequestBase & { selection: 'page'; bids: number[] })\r\n | (BulkEditRequestBase & {\r\n selection: 'all';\r\n filter: Filter;\r\n sharedp: SharedP;\r\n tags: string[];\r\n query: string | null;\r\n });\r\n\r\nexport type BulkEditResponse = {\r\n ok: boolean;\r\n status: number;\r\n bodyText?: string;\r\n data?: { editedCount: number };\r\n};\r\n\r\nexport type NoteBulkAction = 'private' | 'public' | 'markdown' | 'plaintext' | 'delete';\r\n\r\ntype NoteBulkEditRequestBase = {\r\n action: NoteBulkAction;\r\n selectionCount: number;\r\n};\r\n\r\nexport type NoteBulkEditRequest =\r\n | (NoteBulkEditRequestBase & { selection: 'page'; nids: number[] })\r\n | (NoteBulkEditRequestBase & { selection: 'all'; sharedp: SharedP; query: string | null });\r\n\r\n/** Raw tag cloud mode as stored/sent by the server. */\r\nexport type TagCloudMode = {\r\n /** The mode name (e.g. 'top', 'lowerBound', 'related', 'none'). */\r\n mode: string;\r\n /** Mode-specific parameter value. */\r\n value: unknown;\r\n /** Whether the tag cloud panel is expanded. */\r\n expanded: boolean;\r\n /** Minimum bookmark count for related tags (only used in 'related' mode). */\r\n lowerBound?: number;\r\n};\r\n\r\n/** Map of tag name to usage count. */\r\nexport type TagCloud = Record<string, number>;\r\n\r\n/** Discriminated union representing the tag cloud filter mode. */\r\nexport type TagCloudModeF =\r\n | { kind: 'top'; expanded: boolean }\r\n | { kind: 'lowerBound'; expanded: boolean; value: number }\r\n | { kind: 'related'; expanded: boolean; value: string[] }\r\n | { kind: 'relatedLowerBound'; expanded: boolean; value: string[]; lowerBound: number }\r\n | { kind: 'none' };\r\n\r\nexport type TagCloudModeBrowse = Extract<TagCloudModeF, { kind: 'top' | 'lowerBound' }>;\r\nexport type TagCloudModeRelated = Extract<TagCloudModeF, { kind: 'related' | 'relatedLowerBound' }>;\r\n\r\nexport function tagCloudModeToF(mode: TagCloudMode): TagCloudModeF {\r\n switch (mode.mode) {\r\n case 'top':\r\n return { kind: 'top', expanded: mode.expanded };\r\n case 'lowerBound': {\r\n const n = typeof mode.value === 'number' ? mode.value : Number(mode.value);\r\n return Number.isFinite(n)\r\n ? { kind: 'lowerBound', expanded: mode.expanded, value: n }\r\n : { kind: 'none' };\r\n }\r\n case 'related': {\r\n const s = typeof mode.value === 'string' ? mode.value : '';\r\n const tags = s ? s.split(' ') : [];\r\n return { kind: 'related', expanded: mode.expanded, value: tags };\r\n }\r\n case 'relatedLowerBound': {\r\n const s = typeof mode.value === 'string' ? mode.value : '';\r\n const tags = s ? s.split(' ') : [];\r\n const lowerBound =\r\n typeof mode.lowerBound === 'number' && mode.lowerBound > 0 ? mode.lowerBound : 1;\r\n return { kind: 'relatedLowerBound', expanded: mode.expanded, value: tags, lowerBound };\r\n }\r\n default:\r\n return { kind: 'none' };\r\n }\r\n}\r\n\r\nexport function tagCloudModeFromF(mode: TagCloudModeF): TagCloudMode {\r\n switch (mode.kind) {\r\n case 'top':\r\n return { mode: 'top', value: null, expanded: mode.expanded };\r\n case 'lowerBound':\r\n return { mode: 'lowerBound', value: mode.value, expanded: mode.expanded };\r\n case 'related':\r\n return { mode: 'related', value: mode.value.join(' '), expanded: mode.expanded };\r\n case 'relatedLowerBound':\r\n return {\r\n mode: 'relatedLowerBound',\r\n value: mode.value.join(' '),\r\n expanded: mode.expanded,\r\n lowerBound: mode.lowerBound,\r\n };\r\n case 'none':\r\n return { mode: 'none', value: '', expanded: false };\r\n }\r\n}\r\n\r\nexport function isExpanded(mode: TagCloudModeF): boolean {\r\n return mode.kind === 'none' ? false : mode.expanded;\r\n}\r\n\r\nexport function setExpanded(mode: TagCloudModeF, expanded: boolean): TagCloudModeF {\r\n return mode.kind === 'none' ? mode : { ...mode, expanded };\r\n}\r\n"], + "mappings": "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cA,EAAY,MAAgBA,IAAT,MACpC4C,GACE5C,EACA+B,EACAY,CACF,EACG3C,EAAcA,EAAY,OACnC,CACA,SAAS4C,GACPtlC,EACAykC,EACAY,EACA,CACA,OAAQrlC,EAAM,IAAK,CACjB,IAAK,IACHolC,GACEplC,EACAykC,EACAY,CACF,EACArlC,EAAM,MAAQmlC,IACHnlC,EAAM,gBAAf,MACAulC,GACEF,EACAzC,GACA5iC,EAAM,cACNA,EAAM,aACR,EACF,MACF,IAAK,GACHolC,GACEplC,EACAykC,EACAY,CACF,EACA,MACF,IAAK,GACL,IAAK,GACH,IAAIG,EAAwB5C,GAC5BA,GAAuBS,GAAiBrjC,EAAM,UAAU,aAAa,EACrEolC,GACEplC,EACAykC,EACAY,CACF,EACAzC,GAAuB4C,EACvB,MACF,IAAK,IACMxlC,EAAM,gBAAf,OACIwlC,EAAwBxlC,EAAM,UACvBwlC,IAAT,MACSA,EAAsB,gBAA/B,MACMA,EAAwBL,GACzBA,GAAsB,SACvBC,GACEplC,EACAykC,EACAY,CACF,EACCF,GAAsBK,GACvBJ,GACEplC,EACAykC,EACAY,CACF,GACN,MACF,QACED,GACEplC,EACAykC,EACAY,CACF,CACJ,CACF,CACA,SAASI,GAAwB/C,EAAa,CAC5C,IAAIgD,EAAgBhD,EAAY,UAChC,GACWgD,IAAT,OACEhD,EAAcgD,EAAc,MAAiBhD,IAAT,MACtC,CACAgD,EAAc,MAAQ,KACtB,GACGA,EAAgBhD,EAAY,QAC1BA,EAAY,QAAU,KACtBA,EAAcgD,QACHhD,IAAT,KACT,CACF,CACA,SAASiD,GAAyCjD,EAAa,CAC7D,IAAInd,EAAYmd,EAAY,UAC5B,IAAWA,EAAY,MAAQ,MAA3B,EAAgC,CAClC,GAAand,IAAT,KACF,QAAS3lB,EAAI,EAAGA,EAAI2lB,EAAU,OAAQ3lB,IAAK,CACzC,IAAI0lB,EAAgBC,EAAU3lB,CAAC,EAC/BkgC,GAAaxa,EACbsgB,GACEtgB,EACAod,CACF,CACF,CACF+C,GAAwB/C,CAAW,CACrC,CACA,GAAIA,EAAY,aAAe,MAC7B,IAA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/B,EACAwyB,GACA,CAACoM,EACH,EACA,MAAM9lC,EACR,IAAK,GACHof,GAAsC,KACtC,MACF,IAAK,GACL,IAAK,GACH,MACF,QACE,MAAM,MAAMpgB,EAAuB,GAAG,CAAC,CAC3C,CACA,IACGkI,EAAQ,YAAcA,IACrBggC,EAAapE,GAA+B,IAAMl9B,GAAI,EACxD,GAAKshC,GACL,CAOA,GANAL,GACEI,EACA//B,EACAwyB,GACA,CAACoM,EACH,EACU1+B,GAAa6/B,EAAiB,EAAG,EAAE,IAAzC,EAA4C,MAAMjnC,EACtDwmC,GAAsBt/B,EACtB+/B,EAAgB,cAAgBO,GAC9BC,GAAoB,KAClB,KACAR,EACAD,EACA5nB,GACAgnB,GACAD,GACAj/B,EACAwyB,GACAuM,GACAhK,GACA6J,GACAuB,EACA,YACA,GACA,CACF,EACAH,CACF,EACA,MAAMlnC,CACR,CACAynC,GACER,EACAD,EACA5nB,GACAgnB,GACAD,GACAj/B,EACAwyB,GACAuM,GACAhK,GACA6J,GACAuB,EACA,KACA,GACA,CACF,CACF,CACF,CACA,KACF,OAAS,IACTP,GAAsB9E,CAAa,CACrC,CACA,SAASyF,GACPpgC,EACAi2B,EACAoK,EACAC,EACAC,EACA1gC,EACAyB,EACAC,EACAC,EACAg/B,EACAX,EACAY,EACAC,EACAC,EACA,CAGA,GAFA3gC,EAAK,cAAgB,GACrBygC,EAAwBxK,EAAa,aAEnCwK,EAAwB,OACVA,EAAwB,YAAtC,SACA,CACAA,EAAwB,CACtB,YAAa,KACb,MAAO,EACP,SAAU,EACV,SAAU,EACV,gBAAiB,CAAC,EAClB,iBAAkB,GAClB,yBAA0B,GAC1B,UAAWh4B,EACb,EACA+0B,GACEvH,EACAp2B,EACA4gC,CACF,EACA,IAAIG,GACD/gC,EAAQ,YAAcA,EACnB47B,GAA+Bl9B,GAAI,GAClCsB,EAAQ,WAAaA,EACpBsb,GAAiC5c,GAAI,EACrC,EAKR,GAJAqiC,EAAgBC,GACdJ,EACAG,CACF,EACaA,IAAT,KAAwB,CAC1BzB,GAAsBt/B,EACtBG,EAAK,oBAAsB4gC,EA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AAgBrqB,CAAG,EACpC,MACF,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACKvR,GAAR,MACe,OAAOA,GAAtB,YACa,OAAOA,GAApB,UACA,CAAC,MAAMA,CAAK,GACZ,GAAKA,EACD47B,EAAW,aAAarqB,EAAKvR,CAAK,EAClC47B,EAAW,gBAAgBrqB,CAAG,EAClC,MACF,IAAK,UACL,IAAK,QACKvR,GAAR,MACe,OAAOA,GAAtB,YACa,OAAOA,GAApB,UACA,MAAMA,CAAK,EACP47B,EAAW,gBAAgBrqB,CAAG,EAC9BqqB,EAAW,aAAarqB,EAAKvR,CAAK,EACtC,MACF,IAAK,UACH2b,GAA0B,eAAgBigB,CAAU,EACpDjgB,GAA0B,SAAUigB,CAAU,EAC9ClyB,GAAqBkyB,EAAY,UAAW57B,CAAK,EACjD,MACF,IAAK,eACH6J,GACE+xB,EACA,+BACA,gBACA57B,CACF,EACA,MACF,IAAK,eACH6J,GACE+xB,EACA,+BACA,gBACA57B,CACF,EACA,MACF,IAAK,YACH6J,GACE+xB,EACA,+BACA,aACA57B,CACF,EACA,MACF,IAAK,YACH6J,GACE+xB,EACA,+BACA,aACA57B,CACF,EACA,MACF,IAAK,aACH6J,GACE+xB,EACA,+BACA,cACA57B,CACF,EACA,MACF,IAAK,YACH6J,GACE+xB,EACA,+BACA,aACA57B,CACF,EACA,MACF,IAAK,UACH6J,GACE+xB,EACA,uCACA,WACA57B,CACF,EACA,MACF,IAAK,UACH6J,GACE+xB,EACA,uCACA,WACA57B,CACF,EACA,MACF,IAAK,WACH6J,GACE+xB,EACA,uCACA,YACA57B,CACF,EACA,MACF,IAAK,KACH0J,GAAqBkyB,EAAY,KAAM57B,CAAK,EAC5C,MACF,IAAK,YACL,IAAK,cACH,MACF,SAEI,EAAE,EAAIuR,EAAI,SACDA,EAAI,CAAC,IAAb,KAA0BA,EAAI,CAAC,IAAb,KACVA,EAAI,CAAC,IAAb,KAA0BA,EAAI,CAAC,IAAb,OAElBA,EAAMvE,GAAQ,IAAIuE,CAAG,GAAKA,EACzB7H,GAAqBkyB,EAAYrqB,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AAK,OACL,IAAK,MACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,YACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,SACL,IAAK,kBACL,IAAK,YACL,IAAK,mBACL,IAAK,iBACL,IAAK,oBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,OACL,IAAK,mBACL,IAAK,QACL,IAAK,aACL,IAAK,WACL,IAAK,SACL,IAAK,cACH,MAAO,GACT,IAAK,OACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACH,MAAO,GACT,IAAK,UACH,OAAQzP,GAAwB,EAAG,CACjC,KAAKC,GACH,MAAO,GACT,KAAKC,GACH,MAAO,GACT,KAAKC,GACL,KAAKC,GACH,MAAO,IACT,KAAKC,GACH,MAAO,WACT,QACE,MAAO,GACX,CACF,QACE,MAAO,GACX,CACF,CACA,IAAIuzC,GAA4B,GAC9BC,GAAc,KACdC,GAAa,KACbC,GAAc,KACdC,GAAiB,IAAI,IACrBC,GAAwB,IAAI,IAC5BC,GAAiC,CAAC,EAClCR,GACE,sPAAsP,MACpP,GACF,EACJ,SAASF,GAAuB/jC,EAAcrF,EAAa,CACzD,OAAQqF,EAAc,CACpB,IAAK,UACL,IAAK,WACHokC,GAAc,KACd,MACF,IAAK,YACL,IAAK,YACHC,GAAa,KACb,MACF,IAAK,YACL,IAAK,WACHC,GAAc,KACd,MACF,IAAK,cACL,IAAK,aACHC,GAAe,OAAO5pC,EAAY,SAAS,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,KAAOb,IAAW,MAAM,CACtB,IAAMc,EAAO7F,GAAyB+E,EAAQa,CAAI,EAElD,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOzE,GAAQwE,EAAKC,GAAG,EAGzB,GAAI,OAAOD,EAAKR,OAAU,WACxB,OAAOhE,GAAQwE,EAAKR,KAAK,CAE7B,CAEAN,EAAShF,GAAegF,CAAM,CAChC,CAEA,SAASgB,GAAa,CACpB,OAAO,IACT,CAEA,OAAOA,CACT,CAEA,SAASC,GAAQX,EAAc,CAC7B,GAAI,CACF3B,OAAAA,GAAW2B,EAAiB,EAAE,EACvB,EACT,OAAEY,EAAM,CACN,MAAO,EACT,CACF,CCnSO,IAAMC,GAAOjG,GAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KAAK,CACG,EAEGkG,GAAMlG,GAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OAAO,CACC,EAEGmG,GAAanG,GAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAAc,CACN,EAMGoG,GAAgBpG,GAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAAK,CACG,EAEGqG,GAASrG,GAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aAAa,CACL,EAIGsG,GAAmBtG,GAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAAM,CACE,EAEGuG,GAAOvG,GAAO,CAAC,OAAO,CAAU,EC1RhCiG,GAAOjG,GAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,OAAO,CACC,EAEGkG,GAAMlG,GAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,YAAY,CACJ,EAEGqG,GAASrG,GAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,cACA,cA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", + "names": ["require_react_production", "__commonJSMin", "exports", "REACT_ELEMENT_TYPE", "REACT_PORTAL_TYPE", "REACT_FRAGMENT_TYPE", "REACT_STRICT_MODE_TYPE", "REACT_PROFILER_TYPE", "REACT_CONSUMER_TYPE", "REACT_CONTEXT_TYPE", "REACT_FORWARD_REF_TYPE", "REACT_SUSPENSE_TYPE", "REACT_MEMO_TYPE", "REACT_LAZY_TYPE", "REACT_ACTIVITY_TYPE", "MAYBE_ITERATOR_SYMBOL", "getIteratorFn", "maybeIterable", "ReactNoopUpdateQueue", "assign", "emptyObject", "Component", "props", "context", "updater", "partialState", "callback", "ComponentDummy", "PureComponent", "pureComponentPrototype", "isArrayImpl", "noop", "ReactSharedInternals", "hasOwnProperty", "ReactElement", "type", "key", "refProp", "cloneAndReplaceKey", "oldElement", "newKey", "isValidElement", "object", "escape", "escaperLookup", "match", "userProvidedKeyEscapeRegex", "getElementKey", "element", "index", "resolveThenable", "thenable", "fulfilledValue", "error", "mapIntoArray", "children", "array", "escapedPrefix", "nameSoFar", "invokeCallback", "c", "nextNamePrefix", "i", "mapChildren", "func", "result", "count", "child", "lazyInitializer", "payload", "ctor", "moduleObject", "reportGlobalError", "event", "Children", "forEachFunc", "forEachContext", "n", "size", "fn", "config", "propName", "childArray", "defaultValue", "childrenLength", "render", "compare", "scope", "prevTransition", "currentTransition", "returnValue", "onStartTransitionFinish", "usable", "action", "initialState", "permalink", "deps", "Context", "value", "initialValue", "create", "ref", "passthrough", "reducer", "initialArg", "init", "subscribe", "getSnapshot", "getServerSnapshot", "require_react", "__commonJSMin", "exports", "module", "require_void_elements", "__commonJSMin", "exports", "module", "require_use_sync_external_store_shim_production", "__commonJSMin", "exports", "React", "is", "x", "y", "objectIs", "useState", "useEffect", "useLayoutEffect", "useDebugValue", "useSyncExternalStore$2", "subscribe", "getSnapshot", "value", "_useState", "inst", "forceUpdate", "checkIfSnapshotChanged", "latestGetSnapshot", "nextValue", "error", "useSyncExternalStore$1", "shim", "require_shim", "__commonJSMin", "exports", "module", "require_scheduler_production", "__commonJSMin", "exports", "push", "heap", "node", "index", "a", "parentIndex", "parent", "compare", "peek", "pop", "first", "last", "length", "halfLength", "leftIndex", "left", "rightIndex", "right", "b", "diff", "localPerformance", "localDate", "initialTime", "taskQueue", "timerQueue", "taskIdCounter", "currentTask", "currentPriorityLevel", "isPerformingWork", "isHostCallbackScheduled", "isHostTimeoutScheduled", "needsPaint", "localSetTimeout", "localClearTimeout", "localSetImmediate", "advanceTimers", "currentTime", "timer", "handleTimeout", "isMessageLoopRunning", "schedulePerformWorkUntilDeadline", "firstTimer", "requestHostTimeout", "taskTimeoutID", "frameInterval", "startTime", "shouldYieldToHost", "performWorkUntilDeadline", "hasMoreWork", "previousPriorityLevel", "callback", "continuationCallback", "channel", "port", "ms", "task", "fps", "eventHandler", "priorityLevel", "options", "timeout", "parentPriorityLevel", "require_scheduler", "__commonJSMin", "exports", "module", "require_react_dom_production", "__commonJSMin", "exports", "React", "formatProdErrorMessage", "code", "url", "i", "noop", "Internals", "REACT_PORTAL_TYPE", "createPortal$1", "children", "containerInfo", "implementation", "key", "ReactSharedInternals", "getCrossOriginStringAs", "as", "input", "container", "fn", "previousTransition", "previousUpdatePriority", "href", "options", "crossOrigin", "integrity", "fetchPriority", "form", "a", "action", "initialState", "permalink", "require_react_dom", "__commonJSMin", "exports", "module", "checkDCE", "err", "require_react_dom_client_production", "__commonJSMin", "exports", "Scheduler", "React", "ReactDOM", "formatProdErrorMessage", "code", "url", "i", "isValidContainer", "node", "getNearestMountedFiber", "fiber", "nearestMounted", "getSuspenseInstanceFromFiber", "suspenseState", "getActivityInstanceFromFiber", "activityState", "assertIsMounted", "findCurrentFiberUsingSlowPath", "alternate", "a", "b", "parentA", "parentB", "didFindChild", "child$0", "findCurrentHostFiberImpl", "tag", "assign", "REACT_LEGACY_ELEMENT_TYPE", "REACT_ELEMENT_TYPE", "REACT_PORTAL_TYPE", "REACT_FRAGMENT_TYPE", "REACT_STRICT_MODE_TYPE", "REACT_PROFILER_TYPE", "REACT_CONSUMER_TYPE", "REACT_CONTEXT_TYPE", "REACT_FORWARD_REF_TYPE", "REACT_SUSPENSE_TYPE", "REACT_SUSPENSE_LIST_TYPE", "REACT_MEMO_TYPE", "REACT_LAZY_TYPE", "REACT_ACTIVITY_TYPE", "REACT_MEMO_CACHE_SENTINEL", "MAYBE_ITERATOR_SYMBOL", "getIteratorFn", "maybeIterable", "REACT_CLIENT_REFERENCE", "getComponentNameFromType", "type", "innerType", "x", "isArrayImpl", "ReactSharedInternals", "ReactDOMSharedInternals", "sharedNotPendingObject", "valueStack", "index", "createCursor", "defaultValue", "pop", "cursor", "push", "value", "contextStackCursor", "contextFiberStackCursor", "rootInstanceStackCursor", "hostTransitionProviderCursor", "pushHostContainer", "nextRootInstance", "getOwnHostContext", "getChildHostContextProd", "popHostContainer", "pushHostContext", "context", "JSCompiler_inline_result", "popHostContext", "HostTransitionContext", "prefix", "suffix", "describeBuiltInComponentFrame", "name", "match", "reentry", "describeNativeComponentFrame", "fn", "construct", "previousPrepareStackTrace", "RunInRootFrame", "Fake", "control", "x$1", "x$2", "sample", "namePropDescriptor", "_RunInRootFrame$Deter", "sampleStack", "controlStack", "sampleLines", "controlLines", "frame", "describeFiber", "childFiber", "getStackByFiberInDevAndProd", "workInProgress", "info", "previous", "hasOwnProperty", "scheduleCallback$3", "cancelCallback$1", "shouldYield", "requestPaint", "now", "getCurrentPriorityLevel", "ImmediatePriority", "UserBlockingPriority", "NormalPriority$1", "LowPriority", "IdlePriority", "log$1", "unstable_setDisableYieldValue", "rendererID", "injectedHook", "setIsStrictModeForDevtools", "newIsStrictMode", "err", "clz32", "clz32Fallback", "log", "LN2", "nextTransitionUpdateLane", "nextTransitionDeferredLane", "nextRetryLane", "getHighestPriorityLanes", "lanes", "pendingSyncLanes", "getNextLanes", "root", "wipLanes", "rootHasPendingCommit", "pendingLanes", "nextLanes", "suspendedLanes", "pingedLanes", "nonIdlePendingLanes", "checkIfRootIsPrerendering", "renderLanes", "computeExpirationTime", "lane", "currentTime", "claimNextRetryLane", "createLaneMap", "initial", "laneMap", "markRootUpdated$1", "updateLane", "markRootFinished", "finishedLanes", "remainingLanes", "spawnedLane", "updatedLanes", "suspendedRetryLanes", "previouslyPendingLanes", "entanglements", "expirationTimes", "hiddenUpdates", "index$7", "hiddenUpdatesForLane", "update", "markSpawnedDeferredLane", "entangledLanes", "spawnedLaneIndex", "markRootEntangled", "rootEntangledLanes", "index$8", "getBumpedLaneForHydration", "renderLane", "getBumpedLaneForHydrationByLane", "lanesToEventPriority", "resolveUpdatePriority", "updatePriority", "getEventPriority", "runWithPriority", "priority", "previousPriority", "randomKey", "internalInstanceKey", "internalPropsKey", "internalContainerInstanceKey", "internalEventHandlersKey", "internalEventHandlerListenersKey", "internalEventHandlesSetKey", "internalRootNodeResourcesKey", "internalHoistableMarker", "detachDeletedInstance", "getClosestInstanceFromNode", "targetNode", "targetInst", "parentNode", "getParentHydrationBoundary", "getInstanceFromNode", "getNodeFromInstance", "inst", "getResourcesFromRoot", "resources", "markNodeAsHoistable", "allNativeEvents", "registrationNameDependencies", "registerTwoPhaseEvent", "registrationName", "dependencies", "registerDirectEvent", "VALID_ATTRIBUTE_NAME_REGEX", "illegalAttributeNameCache", "validatedAttributeNameCache", "isAttributeNameSafe", "attributeName", "setValueForAttribute", "prefix$10", "setValueForKnownAttribute", "setValueForNamespacedAttribute", "namespace", "getToStringValue", "isCheckable", "elem", "trackValueOnNode", "valueField", "currentValue", "descriptor", "get", "set", "track", "updateValueIfChanged", "tracker", "lastValue", "getActiveElement", "doc", "e", "escapeSelectorAttributeValueInsideDoubleQuotesRegex", "escapeSelectorAttributeValueInsideDoubleQuotes", "ch", "updateInput", "element", "lastDefaultValue", "checked", "defaultChecked", "setDefaultValue", "initInput", "isHydrating", "updateOptions", "multiple", "propValue", "setDefaultSelected", "updateTextarea", "initTextarea", "children", "setTextContent", "text", "firstChild", "unitlessNumbers", "setValueForStyle", "style", "styleName", "isCustomProperty", "setValueForStyles", "styles", "prevStyles", "styleName$16", "styleName$17", "isCustomElement", "tagName", "aliases", "isJavaScriptProtocol", "sanitizeURL", "noop$1", "currentReplayingEvent", "getEventTarget", "nativeEvent", "restoreTarget", "restoreQueue", "restoreStateOfTarget", "target", "internalInstance", "props", "otherNode", "otherProps", "isInsideEventHandler", "batchedUpdates$1", "flushSyncWork$1", "getListener", "stateNode", "canUseDOM", "passiveBrowserEventsSupported", "options", "startText", "fallbackText", "getData", "start", "startValue", "startLength", "end", "endValue", "endLength", "minEnd", "getEventCharCode", "keyCode", "functionThatReturnsTrue", "functionThatReturnsFalse", "createSyntheticEvent", "Interface", "SyntheticBaseEvent", "reactName", "reactEventType", "nativeEventTarget", "propName", "event", "EventInterface", "SyntheticEvent", "UIEventInterface", "SyntheticUIEvent", "lastMovementX", "lastMovementY", "lastMouseEvent", "MouseEventInterface", "getEventModifierState", "SyntheticMouseEvent", "DragEventInterface", "SyntheticDragEvent", "FocusEventInterface", "SyntheticFocusEvent", "AnimationEventInterface", "SyntheticAnimationEvent", "ClipboardEventInterface", "SyntheticClipboardEvent", "CompositionEventInterface", "SyntheticCompositionEvent", "normalizeKey", "translateToKey", "modifierKeyToProp", "modifierStateGetter", "keyArg", "KeyboardEventInterface", "key", "SyntheticKeyboardEvent", "PointerEventInterface", "SyntheticPointerEvent", "TouchEventInterface", "SyntheticTouchEvent", "TransitionEventInterface", "SyntheticTransitionEvent", "WheelEventInterface", "SyntheticWheelEvent", "ToggleEventInterface", "SyntheticToggleEvent", "END_KEYCODES", "canUseCompositionEvent", "documentMode", "canUseTextInputEvent", "useFallbackCompositionData", "SPACEBAR_CHAR", "hasSpaceKeypress", "isFallbackCompositionEnd", "domEventName", "getDataFromCustomEvent", "isComposing", "getNativeBeforeInputChars", "getFallbackBeforeInputChars", "supportedInputTypes", "isTextInputElement", "nodeName", "createAndAccumulateChangeEvent", "dispatchQueue", "accumulateTwoPhaseListeners", "activeElement$1", "activeElementInst$1", "runEventInBatch", "processDispatchQueue", "getInstIfValueChanged", "getTargetInstForChangeEvent", "isInputEventSupported", "isSupported$jscomp$inline_427", "element$jscomp$inline_428", "JSCompiler_inline_result$jscomp$286", "stopWatchingForValueChange", "handlePropertyChange", "handleEventsForInputEventPolyfill", "getTargetInstForInputEventPolyfill", "getTargetInstForClickEvent", "getTargetInstForInputOrChangeEvent", "is", "y", "objectIs", "shallowEqual", "objA", "objB", "keysA", "keysB", "currentKey", "getLeafNode", "getNodeForCharacterOffset", "offset", "nodeEnd", "containsNode", "outerNode", "innerNode", "getActiveElementDeep", "containerInfo", "hasSelectionCapabilities", "skipSelectionChangeEvent", "activeElement", "activeElementInst", "lastSelection", "mouseDown", "constructSelectEvent", "makePrefixMap", "styleProp", "eventName", "prefixes", "vendorPrefixes", "prefixedEventNames", "getVendorPrefixedEventName", "prefixMap", "ANIMATION_END", "ANIMATION_ITERATION", "ANIMATION_START", "TRANSITION_RUN", "TRANSITION_START", "TRANSITION_CANCEL", "TRANSITION_END", "topLevelEventsToReactNames", "simpleEventPluginEvents", "registerSimpleEvent", "reportGlobalError", "error", "concurrentQueues", "concurrentQueuesIndex", "concurrentlyUpdatedLanes", "finishQueueingConcurrentUpdates", "endIndex", "queue", "pending", "markUpdateLaneFromFiberToRoot", "enqueueUpdate$1", "enqueueConcurrentHookUpdate", "getRootForUpdatedFiber", "enqueueConcurrentRenderForLane", "sourceFiber", "isHidden", "parent", "nestedUpdateCount", "rootWithNestedUpdates", "emptyContextObject", "FiberNode", "pendingProps", "mode", "createFiberImplClass", "shouldConstruct", "Component", "createWorkInProgress", "current", "resetWorkInProgress", "createFiberFromTypeAndProps", "owner", "fiberTag", "isHostHoistableType", "createFiberFromFragment", "elements", "createFiberFromText", "content", "createFiberFromDehydratedFragment", "dehydratedNode", "createFiberFromPortal", "portal", "CapturedStacks", "createCapturedValueAtFiber", "source", "existing", "forkStack", "forkStackIndex", "treeForkProvider", "treeForkCount", "idStack", "idStackIndex", "treeContextProvider", "treeContextId", "treeContextOverflow", "pushTreeFork", "totalChildren", "pushTreeId", "baseIdWithLeadingBit", "baseLength", "length", "numberOfOverflowBits", "pushMaterializedTreeId", "popTreeContext", "restoreSuspendedTreeContext", "suspendedContext", "hydrationParentFiber", "nextHydratableInstance", "hydrationErrors", "rootOrSingletonContext", "HydrationMismatchException", "throwOnHydrationMismatch", "queueHydrationError", "prepareToHydrateHostInstance", "instance", "listenToNonDelegatedEvent", "mediaEventTypes", "checkForUnmatchedText", "popToNextHostParent", "popHydrationState", "JSCompiler_temp", "shouldSetTextContent", "getNextHydratableInstanceAfterHydrationBoundary", "isSingletonScope", "previousHydratableOnEnteringScopedSingleton", "getNextHydratable", "resetHydrationState", "upgradeHydrationErrorsToRecoverable", "queuedErrors", "workInProgressRootRecoverableErrors", "valueCursor", "currentlyRenderingFiber$1", "lastContextDependency", "pushProvider", "providerFiber", "nextValue", "popProvider", "scheduleContextWorkOnParentPath", "propagationRoot", "propagateContextChanges", "contexts", "forcePropagateEntireTree", "list", "nextFiber", "dependency", "propagateParentContextChanges", "isInsidePropagationBailout", "currentParent", "checkIfContextChanged", "currentDependencies", "prepareToReadContext", "readContext", "readContextForConsumer", "readContextDuringReconciliation", "consumer", "AbortControllerLocal", "listeners", "signal", "listener", "scheduleCallback$2", "NormalPriority", "CacheContext", "createCache", "releaseCache", "cache", "currentEntangledListeners", "currentEntangledPendingCount", "currentEntangledLane", "currentEntangledActionThenable", "entangleAsyncAction", "transition", "thenable", "entangledListeners", "requestTransitionLane", "resolve", "pingEngtangledActionScope", "chainThenableValue", "result", "thenableWithOverride", "prevOnStartTransitionFinish", "returnValue", "globalMostRecentTransitionTime", "resumedCache", "peekCacheFromPool", "cacheResumedFromPreviousRender", "workInProgressRoot", "pushTransition", "offscreenWorkInProgress", "prevCachePool", "getSuspendedCache", "cacheFromPool", "SuspenseException", "SuspenseyCommitException", "SuspenseActionException", "noopSuspenseyCommitThenable", "isThenableResolved", "trackUsedThenable", "thenableState", "checkIfUseWrappedInAsyncCatch", "fulfilledValue", "fulfilledThenable", "rejectedThenable", "suspendedThenable", "resolveLazy", "lazyType", "init", "getSuspendedThenable", "rejectedReason", "thenableState$1", "thenableIndexCounter$1", "unwrapThenable", "coerceRef", "throwOnInvalidObjectTypeImpl", "returnFiber", "newChild", "createChildReconciler", "shouldTrackSideEffects", "deleteChild", "childToDelete", "deletions", "deleteRemainingChildren", "currentFirstChild", "mapRemainingChildren", "existingChildren", "useFiber", "placeChild", "newFiber", "lastPlacedIndex", "newIndex", "placeSingleChild", "updateTextNode", "textContent", "updateElement", "elementType", "updateFragment", "updatePortal", "fragment", "createChild", "updateSlot", "oldFiber", "updateFromMap", "newIdx", "reconcileChildrenArray", "newChildren", "resultingFirstChild", "previousNewFiber", "nextOldFiber", "child", "reconcileChildrenIterator", "step", "reconcileChildFibersImpl", "firstChildFiber", "reconcileChildFibers", "mountChildFibers", "hasForceUpdate", "initializeUpdateQueue", "cloneUpdateQueue", "createUpdate", "enqueueUpdate", "updateQueue", "executionContext", "entangleTransitions", "queueLanes", "enqueueCapturedUpdate", "capturedUpdate", "newFirst", "newLast", "clone", "didReadFromEntangledAsyncAction", "suspendIfUpdateReadFromEntangledAsyncAction", "entangledActionThenable", "processUpdateQueue", "workInProgress$jscomp$0", "instance$jscomp$0", "firstBaseUpdate", "lastBaseUpdate", "pendingQueue", "lastPendingUpdate", "firstPendingUpdate", "newState", "isHiddenUpdate", "workInProgressRootRenderLanes", "workInProgressRootSkippedLanes", "callCallback", "callback", "commitCallbacks", "callbacks", "currentTreeHiddenStackCursor", "prevEntangledRenderLanesCursor", "pushHiddenContext", "entangledRenderLanes", "reuseHiddenContextOnStack", "popHiddenContext", "suspenseHandlerStackCursor", "shellBoundary", "pushPrimaryTreeSuspenseHandler", "handler", "suspenseStackCursor", "pushDehydratedActivitySuspenseHandler", "pushOffscreenSuspenseHandler", "reuseSuspenseHandlerOnStack", "popSuspenseHandler", "findFirstSuspended", "row", "state", "isSuspenseInstancePending", "isSuspenseInstanceFallback", "currentlyRenderingFiber", "currentHook", "workInProgressHook", "didScheduleRenderPhaseUpdate", "didScheduleRenderPhaseUpdateDuringThisPass", "shouldDoubleInvokeUserFnsInHooksDEV", "localIdCounter", "thenableIndexCounter", "globalClientIdCounter", "throwInvalidHookError", "areHookInputsEqual", "nextDeps", "prevDeps", "renderWithHooks", "secondArg", "nextRenderLanes", "HooksDispatcherOnMount", "HooksDispatcherOnUpdate", "renderWithHooksAgain", "finishRenderingHooks", "ContextOnlyDispatcher", "didRenderTooFewHooks", "didReceiveUpdate", "numberOfReRenders", "HooksDispatcherOnRerender", "TransitionAwareHostComponent", "dispatcher", "maybeThenable", "useThenable", "checkDidRenderIdHook", "didRenderIdHook", "bailoutHooks", "resetHooksOnUnwind", "mountWorkInProgressHook", "hook", "updateWorkInProgressHook", "nextCurrentHook", "nextWorkInProgressHook", "createFunctionComponentUpdateQueue", "use", "usable", "useMemoCache", "size", "memoCache", "array", "basicStateReducer", "action", "updateReducer", "reducer", "updateReducerImpl", "baseQueue", "baseFirst", "newBaseQueueFirst", "newBaseQueueLast", "didReadFromEntangledAsyncAction$60", "revertLane", "rerenderReducer", "dispatch", "lastRenderPhaseUpdate", "updateSyncExternalStore", "subscribe", "getSnapshot", "getServerSnapshot", "isHydrating$jscomp$0", "snapshotChanged", "updateEffect", "subscribeToStore", "pushSimpleEffect", "updateStoreInstance", "pushStoreConsistencyCheck", "renderedSnapshot", "nextSnapshot", "checkIfSnapshotChanged", "forceStoreRerender", "latestGetSnapshot", "scheduleUpdateOnFiber", "mountStateImpl", "initialState", "initialStateInitializer", "updateOptimisticImpl", "passthrough", "dispatchActionState", "actionQueue", "setPendingState", "setState", "payload", "isRenderPhaseUpdate", "actionNode", "runActionStateAction", "prevState", "prevTransition", "currentTransition", "onStartTransitionFinish", "handleActionReturnValue", "onActionError", "error$66", "nextState", "onActionSuccess", "notifyActionListeners", "last", "actionStateReducer", "oldState", "mountActionState", "initialStateProp", "ssrFormState", "JSCompiler_inline_result$jscomp$0", "inRootOrSingleton", "dispatchSetState", "dispatchOptimisticSetState", "updateActionState", "stateHook", "updateActionStateImpl", "currentStateHook", "actionStateActionEffect", "rerenderActionState", "create", "deps", "updateRef", "mountEffectImpl", "fiberFlags", "hookFlags", "updateEffectImpl", "mountEffect", "useEffectEventImpl", "componentUpdateQueue", "events", "updateEvent", "ref", "updateInsertionEffect", "updateLayoutEffect", "imperativeHandleEffect", "refCleanup", "updateImperativeHandle", "mountDebugValue", "updateCallback", "updateMemo", "nextCreate", "mountDeferredValueImpl", "initialValue", "requestDeferredLane", "updateDeferredValueImpl", "prevValue", "startTransition", "pendingState", "finishedState", "thenableForFinishedState", "dispatchSetStateInternal", "requestUpdateLane", "noop", "startHostTransition", "formFiber", "formData", "ensureFormComponentIsStateful", "requestFormReset$1", "existingStateHook", "initialResetState", "useHostTransitionStatus", "updateId", "updateRefresh", "refreshCache", "provider", "root$69", "dispatchReducerAction", "enqueueRenderPhaseUpdate", "entangleTransitionUpdate", "currentState", "eagerState", "throwIfDuringRender", "initialArg", "identifierPrefix", "idWithLeadingBit", "booleanOrThenable", "applyDerivedStateFromProps", "ctor", "getDerivedStateFromProps", "nextProps", "classComponentUpdater", "checkShouldComponentUpdate", "oldProps", "newProps", "nextContext", "callComponentWillReceiveProps", "resolveClassComponentProps", "baseProps", "propName$73", "defaultOnUncaughtError", "defaultOnCaughtError", "defaultOnRecoverableError", "logUncaughtError", "errorInfo", "onUncaughtError", "e$74", "logCaughtError", "boundary", "onCaughtError", "e$75", "createRootErrorUpdate", "createClassErrorUpdate", "initializeClassErrorUpdate", "getDerivedStateFromError", "legacyErrorBoundariesThatAlreadyFailed", "stack", "throwException", "rootRenderLanes", "renderDidSuspendDelayIfPossible", "workInProgressRootExitStatus", "attachPingListener", "wrapperError", "workInProgressRootConcurrentErrors", "SelectiveHydrationException", "reconcileChildren", "nextChildren", "updateForwardRef", "propsWithoutRef", "bailoutOnAlreadyFinishedWork", "updateMemoComponent", "updateSimpleMemoComponent", "checkScheduledUpdateOrContext", "prevProps", "updateFunctionComponent", "updateOffscreenComponent", "deferHiddenOffscreenComponent", "bailoutOffscreenComponent", "nextBaseLanes", "remainingChildLanes", "mountActivityChildren", "mountWorkInProgressOffscreenFiber", "retryActivityComponentWithoutHydrating", "updateActivityComponent", "didSuspend", "canHydrateHydrationBoundary", "dehydrated", "markRef", "replayFunctionComponent", "updateClassComponent", "contextType", "unresolvedOldProps", "oldContext", "contextType$jscomp$0", "mountHostRootWithoutHydrating", "SUSPENDED_MARKER", "mountSuspenseOffscreenState", "getRemainingWorkInPrimaryTree", "primaryTreeDidDefer", "workInProgressDeferredLane", "updateSuspenseComponent", "showFallback", "nextPrimaryChildren", "mountSuspensePrimaryChildren", "retrySuspenseComponentWithoutHydrating", "digest", "primaryChildren", "offscreenProps", "scheduleSuspenseWorkOnFiber", "initSuspenseListRenderState", "isBackwards", "tail", "lastContentRow", "tailMode", "renderState", "updateSuspenseListComponent", "revealOrder", "suspenseContext", "shouldForceFallback", "attemptEarlyBailoutIfNoScheduledUpdate", "state$102", "didSuspendBefore", "beginWork", "$$typeof", "getResource", "getOwnerDocumentFromRootContainer", "setInitialProperties", "resolveSingletonInstance", "canHydrateInstance", "canHydrateTextInstance", "markUpdate", "preloadInstanceAndSuspendIfNeeded", "shouldRemainOnPreviousScreen", "preloadResourceAndSuspendIfNeeded", "resource", "preloadResource", "scheduleRetryEffect", "retryQueue", "workInProgressSuspendedRetryLanes", "cutOffTailIfNeeded", "hasRenderedATailFallback", "lastTailNode", "lastTailNode$106", "bubbleProperties", "completedWork", "didBailout", "newChildLanes", "subtreeFlags", "child$107", "completeWork", "nextResource", "ownerDocument", "listenToAllSupportedEvents", "workInProgressRootRenderTargetTime", "unwindWork", "unwindInterruptedWork", "interruptedWork", "commitHookEffectListMount", "flags", "finishedWork", "lastEffect", "firstEffect", "captureCommitPhaseError", "commitHookEffectListUnmount", "nearestMountedAncestor$jscomp$0", "destroy", "nearestMountedAncestor", "destroy_", "commitClassCallbacks", "safelyCallComponentWillUnmount", "safelyAttachRef", "instanceToUse", "safelyDetachRef", "error$140", "commitHostMount", "commitHostUpdate", "domElement", "updateProperties", "isHostParent", "getHostSibling", "insertOrAppendPlacementNodeIntoContainer", "before", "insertOrAppendPlacementNode", "commitHostSingletonAcquisition", "singleton", "attributes", "offscreenSubtreeIsHidden", "offscreenSubtreeWasHidden", "needsFormReset", "PossiblyWeakSet", "nextEffect", "commitBeforeMutationEffects", "eventsEnabled", "_enabled", "selection", "anchorOffset", "focusNode", "e$20", "indexWithinAnchor", "indexWithinFocus", "next", "selectionInformation", "resolvedPrevProps", "clearContainerSparingly", "commitLayoutEffectOnFiber", "finishedRoot", "recursivelyTraverseLayoutEffects", "error$139", "commitActivityHydrationCallbacks", "commitSuspenseHydrationCallbacks", "retryDehydratedSuspenseBoundary", "registerSuspenseInstanceRetry", "prevOffscreenSubtreeWasHidden", "recursivelyTraverseReappearLayoutEffects", "detachFiberAfterEffects", "hostParent", "hostParentIsContainer", "recursivelyTraverseDeletionEffects", "commitDeletionEffectsOnFiber", "deletedFiber", "prevHostParent", "prevHostParentIsContainer", "releaseSingletonInstance", "clearHydrationBoundary", "retryIfBlockedOn", "getRetryCache", "retryCache", "attachSuspenseRetryListeners", "wakeables", "wakeable", "retry", "resolveRetryWakeable", "recursivelyTraverseMutationEffects", "root$jscomp$0", "parentFiber", "commitMutationEffectsOnFiber", "currentHoistableRoot", "commitReconciliationEffects", "hoistableRoot", "currentResource", "maybeNodes", "getHydratableHoistableCache", "mountHoistable", "acquireResource", "tagCaches", "getHoistableRoot", "recursivelyResetForms", "globalMostRecentFallbackTime", "wasHidden", "prevOffscreenSubtreeIsHidden", "recursivelyTraverseDisappearLayoutEffects", "display", "hideOrUnhideDehydratedBoundary", "hostParentFiber", "parent$141", "before$142", "parent$143", "before$144", "finishedRoot$jscomp$0", "includeWorkInProgressEffects", "hiddenCallbacks", "commitOffscreenPassiveMountEffects", "previousCache", "commitCachePassiveMountEffect", "recursivelyTraversePassiveMountEffects", "committedLanes", "committedTransitions", "commitPassiveMountOnFiber", "_finishedWork$memoize2", "id", "onPostCommit", "recursivelyTraverseAtomicPassiveEffects", "recursivelyTraverseReconnectPassiveEffects", "committedLanes$jscomp$0", "committedTransitions$jscomp$0", "suspenseyCommitFlag", "recursivelyAccumulateSuspenseyCommit", "suspendedState", "accumulateSuspenseyCommitOnFiber", "suspendResource", "previousHoistableRoot", "detachAlternateSiblings", "previousFiber", "recursivelyTraversePassiveUnmountEffects", "commitPassiveUnmountEffectsInsideOfDeletedTree_begin", "commitPassiveUnmountOnFiber", "recursivelyTraverseDisconnectPassiveEffects", "deletedSubtreeRoot", "sibling", "DefaultAsyncDispatcher", "resourceType", "cacheForType", "PossiblyWeakMap", "workInProgressSuspendedReason", "workInProgressThrownValue", "workInProgressRootDidSkipSuspendedSiblings", "workInProgressRootIsPrerendering", "workInProgressRootDidAttachPingListener", "workInProgressRootInterleavedUpdatedLanes", "workInProgressRootPingedLanes", "workInProgressRootDidIncludeRecursiveRenderUpdate", "workInProgressTransitions", "pendingEffectsStatus", "pendingEffectsRoot", "pendingFinishedWork", "pendingEffectsLanes", "pendingEffectsRemainingLanes", "pendingPassiveTransitions", "pendingRecoverableErrors", "prepareFreshStack", "markRootSuspended", "ensureRootIsScheduled", "performWorkOnRoot", "forceSync", "shouldTimeSlice", "exitStatus", "renderRootConcurrent", "renderRootSync", "renderWasConcurrent", "isRenderConsistentWithExternalStores", "wasRootDehydrated", "scheduleTimeout", "commitRootWhenReady", "recoverableErrors", "transitions", "didIncludeRenderPhaseUpdate", "didSkipSuspendedSiblings", "suspendedCommitReason", "completedRenderStartTime", "completedRenderEndTime", "timeoutOffset", "waitForCommitToBeReady", "commitRoot", "check", "didAttemptEntireTree", "index$6", "flushSyncWorkAcrossRoots_impl", "resetWorkInProgressStack", "timeoutHandle", "cancelTimeout", "allEntangledLanes", "index$4", "handleThrow", "thrownValue", "pushDispatcher", "prevDispatcher", "pushAsyncDispatcher", "prevAsyncDispatcher", "shouldYieldForPrerendering", "prevExecutionContext", "unitOfWork", "reason", "throwAndUnwindWorkLoop", "workLoopSync", "thrownValue$165", "performUnitOfWork", "replaySuspendedUnitOfWork", "hostFiber", "completeUnitOfWork", "workLoopConcurrentByScheduler", "thrownValue$167", "suspendedReason", "unwindUnitOfWork", "skipSiblings", "flushPendingEffects", "scheduleCallback$1", "flushPassiveEffects", "flushMutationEffects", "flushLayoutEffects", "flushSpawnedWork", "rootMutationHasEffect", "priorSelectionInformation", "curFocusedElem", "priorFocusedElem", "priorSelectionRange", "win", "start$jscomp$0", "end$jscomp$0", "startMarker", "endMarker", "range", "rootHasLayoutEffect", "releaseRootPooledCache", "onRecoverableError", "recoverableError", "renderPriority", "captureCommitPhaseErrorOnRoot", "rootFiber", "pingCache", "threadIDs", "pingSuspendedRoot", "retryTimedOutBoundary", "boundaryFiber", "retryLane", "priorityLevel", "firstScheduledRoot", "lastScheduledRoot", "didScheduleMicrotask", "mightHavePendingSyncWork", "isFlushingWork", "currentEventTransitionLane", "scheduleImmediateRootScheduleTask", "syncTransitionLanes", "onlyLegacy", "didPerformSomeWork", "root$170", "performSyncWorkOnRoot", "processRootScheduleInImmediateTask", "processRootScheduleInMicrotask", "shouldAttemptEagerTransition", "prev", "scheduleTaskForRootDuringMicrotask", "index$5", "expirationTime", "performWorkOnRootViaSchedulerTask", "didTimeout", "originalCallbackNode", "workInProgressRootRenderLanes$jscomp$0", "scheduleMicrotask", "actionScopeLane", "coerceFormActionProp", "actionProp", "createFormDataWithSubmitter", "form", "submitter", "temp", "extractEvents$1", "maybeTargetInst", "i$jscomp$inline_1577", "eventName$jscomp$inline_1578", "domEventName$jscomp$inline_1579", "capitalizedEvent$jscomp$inline_1580", "nonDelegatedEvents", "eventSystemFlags", "_dispatchQueue$i", "previousInstance", "i$jscomp$0", "_dispatchListeners$i", "currentTarget", "targetElement", "listenerSetKey", "addTrappedEventListener", "listenToNativeEvent", "isCapturePhaseListener", "listeningMarker", "rootContainerElement", "targetContainer", "listenerWrapper", "dispatchDiscreteEvent", "dispatchContinuousEvent", "dispatchEvent", "dispatchEventForPluginEventSystem", "targetInst$jscomp$0", "ancestorInst", "nodeTag", "container", "grandTag", "SyntheticEventCtor", "inCapturePhase", "accumulateTargetOnly", "reactEventName", "lastHostComponent", "_instance", "createDispatchListener", "getParent", "tempB", "accumulateEnterLeaveListenersForEvent", "getTargetInstFunc", "handleEventFunc", "fallbackData", "eventType", "targetFiber", "captureName", "_instance2", "common", "_instance3", "NORMALIZE_NEWLINES_REGEX", "NORMALIZE_NULL_AND_REPLACEMENT_REGEX", "normalizeMarkupForTextOrAttribute", "markup", "serverText", "clientText", "setProp", "setPropOnCustomElement", "hasSrc", "hasSrcSet", "propKey", "propValue$184", "lastProps", "lastProp", "propKey$201", "propKey$217", "propKey$222", "propKey$227", "propKey$232", "isLikelyStaticResource", "initiatorType", "estimateBandwidth", "count", "bits", "resourceEntries", "entry", "transferSize", "duration", "overlapEntry", "overlapStartTime", "overlapTransferSize", "overlapInitiatorType", "namespaceURI", "parentNamespace", "currentPopstateTransitionEvent", "localPromise", "handleErrorInNextTick", "parentInstance", "hydrationInstance", "depth", "nextNode", "node$jscomp$0", "nextNode$jscomp$0", "suspenseInstance", "anyProps", "nodeType", "data", "targetInstance", "rootContainerInstance", "preloadPropsMap", "preconnectsSet", "previousDispatcher", "flushSyncWork", "requestFormReset", "prefetchDNS", "preconnect", "preload", "preloadModule", "preinitScript", "preinitStyle", "preinitModuleScript", "previousWasRendering", "wasRendering", "formInst", "globalDocument", "preconnectAs", "rel", "href", "crossOrigin", "limitedEscapedHref", "as", "preloadSelector", "getStyleKey", "getScriptKey", "getStylesheetSelectorFromKey", "getScriptSelectorFromKey", "precedence", "adoptPreloadPropsForStylesheet", "link", "reject", "insertStylesheet", "src", "scripts", "adoptPreloadPropsForScript", "currentProps", "styles$243", "resource$244", "preloadStylesheet", "stylesheetPropsFromRawProps", "rawProps", "preloadProps", "styleProps", "instance$249", "linkInstance", "nodes", "prior", "stylesheetProps", "scriptProps", "keyAttribute", "caches", "nodeKey", "hostContext", "onUnsuspend", "estimatedBytesWithinLimit", "insertSuspendedStylesheets", "commit", "stylesheetTimer", "unsuspend", "imgTimer", "precedencesByRoot", "insertStylesheetIntoRoot", "precedences", "FiberRootNode", "hydrate", "onDefaultTransitionIndicator", "formState", "createFiberRoot", "initialChildren", "hydrationCallbacks", "isStrictMode", "getContextForSubtree", "parentComponent", "updateContainerImpl", "markRetryLaneImpl", "markRetryLaneIfNotHydrated", "attemptContinuousHydration", "attemptHydrationAtCurrentPriority", "blockedOn", "findInstanceBlockingEvent", "return_targetInst", "clearIfContinuousEvent", "queueIfContinuousEvent", "discreteReplayableEvents", "findInstanceBlockingTarget", "hasScheduledReplayAttempt", "queuedFocus", "queuedDrag", "queuedMouse", "queuedPointers", "queuedPointerCaptures", "queuedExplicitHydrationTargets", "accumulateOrCreateContinuousQueuedReplayableEvent", "existingQueuedEvent", "pointerId", "attemptExplicitHydrationTarget", "queuedTarget", "attemptReplayContinuousQueuedEvent", "queuedEvent", "targetContainers", "nextBlockedOn", "nativeEventClone", "attemptReplayContinuousQueuedEventInMap", "map", "replayUnblockedEvents", "scheduleCallbackIfUnblocked", "unblocked", "lastScheduledReplayQueue", "scheduleReplayQueueIfNeeded", "formReplayingQueue", "submitterOrAction", "unblock", "formProps", "defaultOnDefaultTransitionIndicator", "handleNavigate", "pendingResolve", "handleNavigateComplete", "isCancelled", "startFakeNavigation", "currentEntry", "ReactDOMRoot", "internalRoot", "ReactDOMHydrationRoot", "isomorphicReactPackageVersion$jscomp$inline_1840", "componentOrElement", "internals$jscomp$inline_2347", "hook$jscomp$inline_2348", "require_client", "__commonJSMin", "exports", "module", "checkDCE", "err", "require_react_jsx_runtime_production", "__commonJSMin", "exports", "REACT_ELEMENT_TYPE", "REACT_FRAGMENT_TYPE", "jsxProd", "type", "config", "maybeKey", "key", "propName", "require_jsx_runtime", "__commonJSMin", "exports", "module", "isString", "obj", "defer", "res", "rej", "promise", "resolve", "reject", "makeString", "object", "copy", "a", "s", "t", "m", "lastOfPathSeparatorRegExp", "cleanKey", "key", "canNotTraverseDeeper", "getLastOfPath", "path", "Empty", "stack", "stackIndex", "setPath", "newValue", "k", "e", "p", "last", "pushPath", "concat", "getPath", "getPathWithDefaults", "data", "defaultData", "value", "deepExtend", "target", "source", "overwrite", "prop", "regexEscape", "str", "_entityMap", "escape", "RegExpCache", "capacity", "pattern", "regExpFromCache", "regExpNew", "chars", "looksLikeObjectPathRegExpCache", "looksLikeObjectPath", "nsSeparator", "keySeparator", "possibleChars", "c", "r", "matched", "ki", "deepFind", "tokens", "current", "i", "next", "nextPath", "j", "getCleanedCode", "code", "consoleLogger", "args", "type", "_a", "_b", "Logger", "_Logger", "concreteLogger", "options", "lvl", "prefix", "debugOnly", "moduleName", "__spreadValues", "baseLogger", "EventEmitter", "events", "listener", "event", "numListeners", "wrapper", "observer", "numTimesAdded", "ResourceStore", "ns", "index", "lng", "ignoreJSONStructure", "result", "resources", "deep", "pack", "v", "postProcessor", "module", "processors", "translator", "processor", "PATH_KEY", "createProxy", "state", "handler", "proxy", "keysFromSelector", "selector", "opts", "strict", "nsList", "shouldHandleAsObject", "Translator", "_Translator", "services", "o", "opt", "resolved", "isObject", "namespaces", "wouldCheckForNsInKey", "seemsNaturalLanguage", "parts", "keys", "lastKey", "returnDetails", "namespace", "appendNamespaceToCIMode", "resUsedKey", "resExactUsedKey", "noObject", "joinArrays", "handleAsObjectInI18nFormat", "needsPluralHandling", "hasDefaultValue", "defaultValueSuffix", "defaultValueSuffixOrdinalFallback", "needsZeroSuffixLookup", "defaultValue", "resForObjHndl", "handleAsObject", "resType", "__spreadProps", "resTypeIsArray", "newKeyToUse", "deepKey", "usedDefault", "usedKey", "resForMissing", "updateMissing", "fk", "lngs", "fallbackLngs", "send", "l", "specificDefaultValue", "defaultForMissing", "language", "suffixes", "suffix", "skipOnVariables", "nestBef", "nb", "na", "nestAft", "postProcess", "postProcessorNames", "found", "exactUsedKey", "usedLng", "usedNS", "extracted", "needsContextHandling", "codes", "finalKeys", "pluralSuffix", "zeroSuffix", "ordinalPrefix", "contextKey", "possibleKey", "optionsKeys", "useOptionsReplaceForData", "option", "LanguageUtil", "formattedCode", "cleanedLng", "lngScOnly", "lngOnly", "supportedLng", "fallbacks", "fallbackCode", "fallbackCodes", "addCode", "fc", "suffixesOrder", "dummyRule", "count", "PluralResolver", "languageUtils", "cleanedCode", "cacheKey", "rule", "err", "lngPart", "pluralCategory1", "pluralCategory2", "pluralCategory", "deepFindWithDefaults", "regexSafe", "val", "Interpolator", "escape$1", "escapeValue", "useRawValueToEscape", "prefixEscaped", "suffixEscaped", "formatSeparator", "unescapeSuffix", "unescapePrefix", "nestingPrefix", "nestingPrefixEscaped", "nestingSuffix", "nestingSuffixEscaped", "nestingOptionsSeparator", "maxReplaces", "alwaysFormat", "getOrResetRegExp", "existingRegExp", "match", "replaces", "handleFormat", "f", "missingInterpolationHandler", "todo", "matchedVar", "temp", "safeValue", "clonedOptions", "handleHasOptions", "inheritedOptions", "sep", "optionsString", "matchedSingleQuotes", "matchedDoubleQuotes", "formatters", "keyEndIndex", "elem", "parseFormatStr", "formatStr", "formatName", "formatOptions", "optStr", "rest", "trimmedKey", "createCachedFormatter", "fn", "cache", "optForCache", "frm", "createNonCachedFormatter", "Formatter", "cf", "formatter", "name", "format", "formats", "lastIndex", "mem", "formatted", "valOptions", "error", "removePending", "q", "Connector", "backend", "store", "languages", "callback", "toLoad", "pending", "toLoadLanguages", "toLoadNamespaces", "hasAllNamespaces", "loaded", "loadedKeys", "n", "fcName", "tried", "wait", "resolver", "fallbackValue", "isUpdate", "clb", "_c", "_d", "_e", "get", "ret", "transformOptions", "noop", "bindMemberFunctions", "inst", "I18n", "_I18n", "defOpts", "createClassOnDemand", "ClassOrObject", "lu", "deferred", "load", "finish", "usedCallback", "append", "li", "lngInLngs", "setLngProps", "done", "setLng", "fl", "keyPrefix", "fixedOpts", "scopeNs", "fixedT", "explicitCallNs", "selectorOpts", "resultKey", "fallbackLng", "lastLng", "loadNotPending", "loadState", "preResult", "preloaded", "newLngs", "ti", "rtlLngs", "instance", "forkResourceStore", "mergedOptions", "clone", "clonedData", "prev", "acc", "mergedInterpolation", "mergedForInterpolator", "createInstance", "dir", "init", "loadResources", "reloadResources", "use", "changeLanguage", "getFixedT", "exists", "setDefaultNamespace", "hasLoadedNamespace", "loadNamespaces", "loadLanguages", "_classCallCheck", "a", "n", "_typeof", "o", "toPrimitive", "t", "r", "_typeof", "e", "i", "toPropertyKey", "t", "i", "toPrimitive", "_typeof", "_defineProperties", "r", "t", "o", "toPropertyKey", "_createClass", "arr", "each", "slice", "defaults", "obj", "source", "prop", "createClassOnDemand", "ClassOrObject", "getDefaults", "handleCorrectReadFunction", "backend", "language", "namespace", "resolver", "fc", "r", "data", "err", "Backend", "services", "options", "i18nextOptions", "_classCallCheck", "_createClass", "_this", "b", "i", "callback", "_this2", "bLen", "_loadPosition", "pos", "isLastBackend", "lengthCheckAmount", "savedAt", "_savePosition", "nextBackend", "languages", "key", "fallbackValue", "clb", "opts", "_this3", "_this$services", "backendConnector", "languageUtils", "logger", "currentLanguage", "toLoad", "append", "lng", "lngs", "l", "ns", "arr", "UNSAFE_KEYS$1", "isSafeUrlSegmentBase", "v", "isSafeLangUrlSegment", "isSafeNsUrlSegment", "SAFETY_CHECK_BY_KEY", "sanitizeLogValue", "redactUrlCredentials", "u", "parsed", "e", "hasXMLHttpRequest", "isPromise", "maybePromise", "makePromise", "interpolationRegexp", "interpolateUrl", "str", "data", "unsafe", "result", "match", "key", "k", "value", "check", "segments", "seg", "g", "fetchApi", "XmlHttpRequestApi", "ActiveXObjectApi", "UNSAFE_KEYS", "addQueryString", "url", "params", "queryString", "paramName", "fetchIt", "fetchOptions", "callback", "altFetch", "resolver", "response", "altResponse", "requestWithFetch", "options", "payload", "headers", "__spreadValues", "reqOptions", "opt", "err", "requestWithXmlHttpRequest", "x", "h", "i", "request", "getDefaults", "namespace", "fallbackValue", "languages", "namespaces", "Backend", "services", "allOptions", "timer", "language", "loadUrlLanguages", "loadUrlNamespaces", "loadPath", "resolvedLoadPath", "safeLngs", "safeNss", "lng", "ns", "safeUrl", "res", "errorMessage", "term", "ret", "parseErr", "finished", "dataArray", "resArray", "addPath", "backendConnector", "languageUtils", "logger", "currentLanguage", "toLoad", "append", "l", "_defineProperty", "r", "t", "toPropertyKey", "ownKeys", "r", "t", "o", "_objectSpread", "_defineProperty", "Storage", "options", "_classCallCheck", "_createClass", "key", "value", "e", "getDefaults", "store", "Cache", "services", "language", "namespace", "callback", "nowMS", "local", "version", "i18nStamp", "data", "_this$options$getVers", "_this$options", "import_react", "import_react", "warn", "i18n", "code", "msg", "rest", "_a", "_b", "_c", "_d", "args", "__spreadValues", "isString", "alreadyWarned", "warnOnce", "loadedClb", "cb", "initialized", "loadNamespaces", "ns", "loadLanguages", "lng", "n", "hasLoadedNamespace", "options", "i18nInstance", "loadNotPending", "isString", "obj", "isObject", "matchHtmlEntity", "htmlEntities", "unescapeHtmlEntity", "m", "unescape", "text", "defaultOptions", "unescape", "setDefaults", "options", "__spreadValues", "getDefaults", "i18nInstance", "setI18n", "instance", "getI18n", "import_react", "initReactI18next", "instance", "setDefaults", "setI18n", "I18nContext", "ReportNamespaces", "namespaces", "ns", "import_react", "import_react", "TranslationParserError", "_TranslationParserError", "message", "position", "translationString", "commonEntities", "entityPattern", "entity", "decodeHtmlEntities", "text", "match", "_", "num", "hex", "tokenize", "translation", "tokens", "position", "currentText", "flushText", "char", "tagMatch", "closeTagMatch", "import_react", "renderDeclarationNode", "declaration", "children", "childDeclarations", "type", "props", "_a", "_childrenToRemove", "propsWithoutChildren", "__objRest", "React", "renderTranslation", "translation", "declarations", "tokens", "tokenize", "result", "stack", "literalTagNumbers", "getCurrentDeclarations", "parentFrame", "token", "decoded", "decodeHtmlEntities", "tagNumber", "currentDeclarations", "literalText", "TranslationParserError", "frame", "element", "unclosed", "IcuTransWithoutContext", "i18nKey", "defaultTranslation", "content", "ns", "values", "i18nFromProps", "tFromProps", "_a", "_b", "_c", "_d", "i18n", "getI18n", "warnOnce", "React", "t", "k", "namespaces", "isString", "mergedValues", "__spreadValues", "translation", "__spreadProps", "rendered", "renderTranslation", "error", "warn", "IcuTrans", "i18nKey", "defaultTranslation", "content", "ns", "values", "i18nFromProps", "tFromProps", "_a", "i18nFromContext", "defaultNSFromContext", "I18nContext", "i18n", "getI18n", "t", "IcuTransWithoutContext", "import_react", "import_shim", "notReadyT", "k", "optsOrDefaultValue", "isString", "isObject", "last", "notReadySnapshot", "dummySubscribe", "useTranslation", "ns", "props", "_a", "_b", "_c", "i18nFromProps", "i18nFromContext", "defaultNSFromContext", "I18nContext", "i18n", "getI18n", "ReportNamespaces", "warnOnce", "i18nOptions", "__spreadValues", "getDefaults", "useSuspense", "keyPrefix", "nsOrContext", "unstableNamespaces", "namespaces", "revisionRef", "subscribe", "callback", "bindI18n", "bindI18nStore", "wrappedCallback", "e", "snapshotRef", "getSnapshot", "calculatedReady", "n", "hasLoadedNamespace", "currentLng", "currentRevision", "lastSnapshot", "newSnapshot", "loadCount", "setLoadCount", "t", "ready", "onLoaded", "c", "loadLanguages", "loadNamespaces", "finalI18n", "wrapperRef", "wrapperLangRef", "createI18nWrapper", "original", "descriptors", "wrapper", "_", "ret", "lang", "i18nWrapper", "effectiveT", "args", "arr", "resolve", "import_react", "import_react", "import_react", "import_react", "translation_default", "app", "fromNow", "locale", "date", "diff", "abs", "units", "rtf", "unit", "ms", "shdatetime", "lang", "dateString", "toLocaleDateString", "closeWindow", "win", "setFocus", "elemId", "_a", "unsafeDecode", "str", "parseQueryString", "searchOrHash", "_a", "first", "parts", "x", "decode", "out", "kv", "k", "rest", "curQuerystring", "lookupQueryStringValue", "qs", "key", "val", "encodeTag", "tag", "fromNullableStr", "s", "normalizeTags", "tags", "apiErrorMsg", "t", "status", "bodyText", "body", "getShortHash", "hash", "i", "defaultNS", "a", "app", "instance", "Backend", "initReactI18next", "defaultNS", "translation_default", "Cache", "getShortHash", "import_react", "import_client", "KyError", "__publicField", "HTTPError", "KyError", "response", "request", "options", "_a", "code", "title", "status", "reason", "__publicField", "NetworkError", "KyError", "request", "options", "__publicField", "NonError", "value", "message", "e", "__publicField", "ForceRetryError", "KyError", "options", "cause", "NonError", "__publicField", "SchemaValidationError", "issues", "__publicField", "TimeoutError", "KyError", "request", "__publicField", "supportsRequestStreams", "duplexAccessed", "hasContentType", "supportsReadableStream", "supportsRequest", "error", "supportsAbortController", "supportsAbortSignal", "supportsResponseStreams", "supportsFormData", "requestMethods", "validate", "responseTypes", "maxSafeTimeout", "usualFormBoundarySize", "stop", "RetryMarker", "options", "__publicField", "retry", "kyOptionKeys", "requestOptionsRegistry", "encoder", "getBodySize", "body", "size", "key", "value", "usualFormBoundarySize", "withProgress", "stream", "totalBytes", "onProgress", "previousChunk", "transferredBytes", "currentChunk", "controller", "percent", "streamResponse", "response", "onDownloadProgress", "responseInit", "streamRequest", "request", "onUploadProgress", "originalBody", "isObject", "value", "replaceSymbol", "getReplaceState", "value", "isObject", "validateAndMerge", "sources", "source", "isObject", "deepMerge", "mergeHeaders", "source1", "source2", "result", "isHeadersInstance", "key", "value", "isPlainObject", "prototype", "cloneShallow", "copy", "deleted", "deletedParametersSymbol", "__spreadValues", "normalizeHeaderObject", "headers", "entry", "mergeHeaderContainers", "newHookValue", "original", "incoming", "property", "_a", "_b", "mergeHooks", "appendSearchParameters", "target", "input", "inputDeleted", "pair", "parameters", "returnValue", "hooks", "searchParameters", "signals", "replaceState", "getReplaceState", "isReplace", "__spreadProps", "hookValue", "headerValue", "supportsAbortSignal", "normalizeRequestMethod", "input", "requestMethods", "retryMethods", "retryStatusCodes", "retryAfterStatusCodes", "defaultRetryOptions", "attemptCount", "normalizeRetryOptions", "retry", "_a", "__spreadProps", "__spreadValues", "normalizedRetry", "method", "value", "timeout", "request", "init", "abortController", "options", "resolve", "reject", "timeoutId", "TimeoutError", "delay", "ms", "signal", "resolve", "reject", "abortHandler", "timeoutId", "findUnknownOptions", "options", "unknownOptions", "key", "requestOptionsRegistry", "kyOptionKeys", "hasSearchParameters", "search", "_a", "deletedParametersSymbol", "objectToString", "isError", "value", "errorMessages", "isRawNetworkError", "error", "message", "stack", "isErrorType", "error", "cls", "isHTTPError", "error", "isErrorType", "HTTPError", "isNetworkError", "NetworkError", "isTimeoutError", "TimeoutError", "maxErrorResponseBodySize", "prefixUrlRenamedErrorMessage", "timedOutResponseData", "createTextDecoder", "contentType", "_a", "match", "charset", "e", "invalidSchemaMessage", "cloneRetryOptions", "retry", "__spreadValues", "objectToString", "isRequestInstance", "value", "isResponseInstance", "cloneSearchParametersForInitHook", "searchParameters", "parameter", "cloneShallow", "cloneInitHookOptions", "options", "clonedOptions", "__spreadProps", "validateJsonWithSchema", "jsonValue", "schema", "standardSchema", "validationResult", "SchemaValidationError", "_Ky_static", "normalizeSearchParams_fn", "_abortController", "_retryCount", "_input", "_options", "_originalRequest", "_userProvidedAbortSignal", "_beforeRetryHookErrors", "_cachedNormalizedOptions", "_startTime", "_returnedResponseFromBeforeRetryHook", "_responseRequests", "_Ky_instances", "calculateDelay_fn", "calculateRetryDelay_fn", "decorateResponse_fn", "getResponseData_fn", "getErrorDataTimeout_fn", "isJsonContentType_fn", "readResponseText_fn", "parseJson_fn", "cancelBody_fn", "cancelResponseBody_fn", "createManagedSignal_fn", "throwIfTotalTimeoutExhausted_fn", "runBeforeRequestHooks_fn", "runAfterResponseHooks_fn", "retry_fn", "retryFromError_fn", "consumeReturnedResponseFromBeforeRetryHook_fn", "fetch_fn", "getRemainingTotalTimeout_fn", "getCurrentTime_fn", "getNormalizedOptions_fn", "assignRequest_fn", "getResponseRequest_fn", "setResponseRequest_fn", "wrapRequestWithUploadProgress_fn", "_Ky", "input", "__privateAdd", "__publicField", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "_m", "_n", "__privateSet", "mergeHeaders", "__privateGet", "mergeHooks", "normalizeRequestMethod", "normalizeRetryOptions", "normalizedPrefix", "normalizedInput", "absoluteInput", "supportsAbortController", "supportsAbortSignal", "__privateMethod", "supportsRequestStreams", "userProvidedContentType", "supportsFormData", "hasSearchParameters", "url", "deleted", "deletedParametersSymbol", "key", "stringSearchParameters", "optionsSearchParameters", "initHooks", "initHookOptions", "hook", "ky", "function_", "maxSafeTimeout", "beforeRequestResponse", "response", "responseFromHook", "error", "ForceRetryError", "retriedResponse", "currentResponse", "httpError", "HTTPError", "errorToThrow", "supportsResponseStreams", "progressResponse", "streamResponse", "result", "processedError", "hookResult", "originalRequest", "type", "mimeType", "responseTypes", "text", "searchParams", "retryDelay", "jitteredDelay", "errorObject", "NonError", "isTimeoutError", "isHTTPError", "retryAfter", "after", "isNetworkError", "request", "data", "errorDataTimeout", "remainingTotal", "TimeoutError", "timeoutMs", "body", "reader", "decoder", "chunks", "totalBytes", "readAll", "done", "timeoutPromise", "resolve", "timeoutId", "remaining", "responseRequest", "hookResponse", "modifiedResponse", "RetryMarker", "nextResponse", "delayOptions", "remainingTimeout", "delay", "customRequest", "hookError", "__privateWrapper", "stop", "nonRequestOptions", "findUnknownOptions", "retryRequest", "effectiveTimeout", "timeout", "isRawNetworkError", "NetworkError", "elapsed", "hooks", "json", "parseJson", "stringifyJson", "totalTimeout", "throwHttpErrors", "fetch", "normalizedOptions", "__objRest", "originalBody", "streamRequest", "Ky", "createInstance", "defaults", "ky", "input", "options", "Ky", "validateAndMerge", "method", "requestMethods", "newDefaults", "stop", "retry", "distribution_default", "withCsrf", "headers", "a", "app", "h", "request", "method", "path", "opts", "_a", "distribution_default", "toggleStar", "bid", "action", "res", "markRead", "destroy", "bulkEdit", "req", "bulkEditPost", "noteBulkEdit", "contentType", "bodyText", "data", "e", "archiveBookmark", "editBookmark", "bm", "editNote", "note", "updated", "lookupTitle", "getTagCloud", "mode", "tagCloudR", "updateTagCloudMode", "fetchTagSuggestions", "destroyNote", "nid", "editAccountSettings", "us", "resetApiKey", "revokeApiKey", "exportPaths", "importFile", "body", "importBookmarks", "text", "importFirefox", "importNetscape", "importNotes", "jsonArray", "logout", "import_react", "import_jsx_runtime", "tabPaths", "tabHref", "value", "tabFromLocation", "pathname", "AccountSettingsView", "initial", "useTranslation", "tab", "setTab", "React", "onPopState", "tabLink", "label", "e", "SettingsView", "ImportExportView", "ApiKeyView", "_a", "us", "setUs", "apiError", "setApiError", "archiveDisabled", "archiveDisabledTitle", "update", "next", "res", "editAccountSettings", "apiErrorMsg", "lockIcon", "err", "TimeoutError", "__spreadProps", "__spreadValues", "ok", "t", "status", "setStatus", "error", "setError", "busy", "setBusy", "runImport", "files", "prepare", "importFn", "texts", "f", "body", "first", "combineNotes", "notes", "txt", "parsed", "importRow", "accept", "multiple", "exportPaths", "importBookmarks", "importFirefox", "importNetscape", "importNotes", "initialHasApiKey", "hasApiKey", "setHasApiKey", "newKey", "setNewKey", "copied", "setCopied", "reset", "resetApiKey", "revoke", "revokeApiKey", "copyKey", "import_react", "import_react", "TAG_SUGGESTION_DEBOUNCE_MS", "useTagSuggestions", "enabled", "useReturnKey", "tags", "onTagsUpdate", "maxSuggestions", "suggestionState", "setSuggestionState", "React", "tagSuggestionRequestId", "tagSuggestionDebounceRef", "tagInputRef", "cancelPendingSuggestions", "closeSuggestions", "onTagsChange", "e", "value", "selectionStart", "selectionEnd", "isWhitespaceOnlyEdit", "activeToken", "getActiveTagToken", "normalizedTagTerms", "getNormalizedTagTerms", "activeTokenNormalized", "shouldExcludeActiveToken", "tag", "payload", "requestId", "response", "fetchTagSuggestions", "items", "anchor", "measureCaretPosition", "applySuggestion", "term", "input", "next", "replaceTokenAtRange", "onTagsKeyDown", "current", "__spreadProps", "__spreadValues", "selected", "onTagsSelect", "onSuggestionHover", "index", "caret", "boundedCaret", "start", "end", "token", "style", "mirror", "prefix", "marker", "left", "top", "range", "replacement", "suffix", "inserted", "previous", "prevEnd", "nextEnd", "removed", "added", "isSpacesOnly", "import_react", "import_jsx_runtime", "MAX_SUGGESTION_TERM_RENDER_LENGTH", "TagSuggestionsDropdown", "suggestionState", "onHover", "onPick", "item", "index", "selected", "displayTerm", "truncateSuggestionTerm", "e", "renderHighlightedSuggestion", "term", "query", "lowerTerm", "lowerQuery", "idx", "before", "match", "after", "import_jsx_runtime", "AddForm", "initial", "_a", "useTranslation", "a", "app", "bm", "setBm", "React", "editBm", "setEditBm", "deleteAsk", "setDeleteAsk", "loading", "setLoading", "destroyed", "setDestroyed", "apiError", "setApiError", "suggestEnabled", "suggestUseReturnKey", "fromNowVal", "fromNow", "tagInputRef", "suggestionState", "closeSuggestions", "onTagsChange", "onTagsKeyDown", "onTagsSelect", "onSuggestionHover", "onSuggestionPick", "useTagSuggestions", "tags", "x", "__spreadProps", "__spreadValues", "onFetchTitle", "title", "lookupTitle", "onDestroy", "res", "destroy", "onSubmit", "e", "editBm2", "normalizeTags", "editBookmark", "qs", "curQuerystring", "next", "lookupQueryStringValue", "ref", "org", "closeWindow", "shdatetime", "TagSuggestionsDropdown", "import_react", "createStoreImpl", "createState", "state", "listeners", "setState", "partial", "replace", "nextState", "previousState", "listener", "getState", "api", "initialState", "createStore", "import_react", "identity", "arg", "useStore", "api", "selector", "slice", "React", "createImpl", "createState", "createStore", "useBoundStore", "create", "useBookmarksStore", "create", "set", "bmarks", "bid", "s", "b", "bm", "import_react", "entries", "Object", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "freeze", "seal", "create", "_ref", "Reflect", "apply", "construct", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "arrayIsArray", "isArray", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "numberToString", "Number", "booleanToString", "Boolean", "bigintToString", "BigInt", "symbolToString", "Symbol", "objectHasOwnProperty", "hasOwnProperty", "objectToString", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "lastIndex", "_len3", "_key3", "_len4", "_key4", "addToSet", "set", "array", "transformCaseFunc", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "_ref2", "_ref3", "_slicedToArray", "property", "value", "constructor", "stringifyValue", "valueAsRecord", "valueToString", "lookupGetter", "stringified", "prop", "desc", "get", "fallbackValue", "isRegex", "_unused", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "CUSTOM_ELEMENT", "NODE_TYPE", "attribute", "cdataSection", "entityReference", "entityNode", "progressingInstruction", "comment", "document", "documentType", "documentFragment", "notation", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "_", "console", "warn", "_createHooksMap", "afterSanitizeAttributes", "afterSanitizeElements", "afterSanitizeShadowDOM", "beforeSanitizeAttributes", "beforeSanitizeElements", "beforeSanitizeShadowDOM", "uponSanitizeAttribute", "uponSanitizeElement", "uponSanitizeShadowNode", "createDOMPurify", "undefined", "DOMPurify", "root", "version", "VERSION", "removed", "nodeType", "Element", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "NodeFilter", "_window$NamedNodeMap", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "remove", "getNextSibling", "getChildNodes", "getParentNode", "getShadowRoot", "getAttributes", "getNodeType", "getNodeName", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "_document", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "EXTRA_ELEMENT_HANDLING", "tagCheck", "attributeCheck", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "SAFE_FOR_XML", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "customElementHandling", "ADD_TAGS", "ADD_ATTR", "ADD_FORBID_CONTENTS", "table", "tbody", "TRUSTED_TYPES_POLICY", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "_forceRemove", "node", "removeChild", "_removeAttribute", "name", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "SHOW_PROCESSING_INSTRUCTION", "SHOW_CDATA_SECTION", "_scrubTemplateExpressions", "normalize", "walker", "currentNode", "nextNode", "data", "expr", "_isClobbered", "realTagName", "nodeName", "textContent", "attributes", "hasChildNodes", "_isDocumentFragment", "_isNode", "_executeHooks", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_isBasicCustomElement", "parentNode", "childCount", "i", "childClone", "_isValidAttribute", "lcTag", "lcName", "nameIsPermitted", "RESERVED_CUSTOM_ELEMENT_NAMES", "_sanitizeAttributes", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "forceKeepAttr", "attr", "initValue", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "innerSr", "shadowRoot", "_sanitizeAttachedShadowRoots", "sr", "snapshot", "child", "rootName", "sanitize", "importedNode", "returnNode", "nn", "appendChild", "firstChild", "nodeIterator", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "entryPoint", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "noopTest", "cachedIndentRegex", "createRegex", "cache", "indent", "cacheIndex", "regex", "edit", "opt", "source", "obj", "name", "val", "valSource", "other", "supportsLookbehind", "a", "e", "bull", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheadingCore", "lheading", "lheadingGfm", "_paragraph", "blockText", "_blockLabel", "def", "list", "_tag", "_comment", "html", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "__spreadProps", "__spreadValues", "blockPedantic", "escape", "inlineCode", "br", "inlineText", "_punctuation", "_punctuationOrSpace", "_notPunctuationOrSpace", "punctuation", "_punctuationGfmStrongEm", "_punctuationOrSpaceGfmStrongEm", "_notPunctuationOrSpaceGfmStrongEm", "blockSkip", "emStrongLDelimCore", "emStrongLDelim", "emStrongLDelimGfm", "emStrongRDelimAstCore", "emStrongRDelimAst", "emStrongRDelimAstGfm", "emStrongRDelimUnd", "delLDelim", "delRDelimCore", "delRDelim", "anyPunctuation", "autolink", "_inlineComment", "tag", "_inlineLabel", "link", "reflink", "nolink", "reflinkSearch", "_caseInsensitiveProtocol", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "escapeReplacements", "getEscapeReplacement", "ch", "escapeHtmlEntities", "encode", "cleanUrl", "href", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "trimTrailingBlankLines", "lines", "end", "findClosingBracket", "b", "level", "expandTabs", "line", "col", "expanded", "char", "added", "outputLink", "cap", "raw", "lexer", "rules", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "__publicField", "src", "trimmed", "tokens", "inBlockquote", "currentLines", "currentRaw", "currentText", "top", "lastToken", "oldToken", "newText", "newToken", "isordered", "itemRegex", "endsWithBlankLine", "endEarly", "itemContents", "nextLine", "blankLine", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "htmlBeginRegex", "blockquoteBeginRegex", "rawLine", "nextLineWithoutTabs", "lastItem", "item", "itemToken", "taskRaw", "checkboxToken", "spacers", "t", "hasMultipleLineBreaks", "headers", "aligns", "rows", "align", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "_b", "_a", "_Lexer", "__Lexer", "next", "lastParagraphClipped", "srcLength", "extTokenizer", "cutSrc", "_c", "startIndex", "tempSrc", "tempStart", "getStartIndex", "keepPrevChar", "_e", "_d", "_f", "byte", "errMsg", "_Renderer", "lang", "langString", "code", "depth", "ordered", "start", "body", "j", "type", "startAttr", "checked", "header", "k", "content", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "anyToken", "genericToken", "ret", "renderer", "_Hooks", "markdown", "Marked", "args", "callback", "values", "tableToken", "listToken", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "blockType", "origOpt", "throwError", "processedSrc", "processedTokens", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "import_react", "import_jsx_runtime", "g", "Markdown", "text", "className", "html", "React", "parsed", "purify", "import_jsx_runtime", "BMark", "initial", "onNotifyRemove", "onUpdated", "_a", "t", "useTranslation", "a", "app", "bm", "setBm", "React", "editBm", "setEditBm", "deleteAsk", "setDeleteAsk", "edit", "setEdit", "loading", "setLoading", "archiving", "setArchiving", "archived", "setArchived", "actionError", "setActionError", "errorFadingOut", "setErrorFadingOut", "errorTimer", "fadeTimer", "clearErrorTimers", "showActionError", "msg", "tagInputId", "linkToFilterSingle", "fromNullableStr", "linkToFilterTag", "tag", "encodeTag", "viewInContextTime", "time", "linkToViewInContext", "suggestEnabled", "suggestUseReturnKey", "tagInputRef", "suggestionState", "closeSuggestions", "onTagsChange", "onTagsKeyDown", "onTagsSelect", "onSuggestionHover", "onSuggestionPick", "useTagSuggestions", "tags", "x", "__spreadProps", "__spreadValues", "onStar", "next", "res", "toggleStar", "apiErrorMsg", "updated", "err", "TimeoutError", "onDestroy", "destroy", "onMarkRead", "markRead", "startEdit", "setFocus", "onFetchTitle", "title", "lookupTitle", "onArchive", "archiveBookmark", "onSubmit", "e", "editBm2", "normalizeTags", "editBookmark", "archivingDisabled", "Markdown", "shdatetime", "toLocaleDateString", "TagSuggestionsDropdown", "import_jsx_runtime", "BList", "initial", "hasHydrated", "setHasHydrated", "React", "bmarks", "useBookmarksStore", "s", "setAll", "removeById", "upsert", "b", "BMark", "bm", "import_react", "import_jsx_runtime", "disabledReason", "selection", "action", "addTags", "removeTags", "bcount", "navLink", "current", "value", "label", "onClick", "e", "BulkEdit", "_a", "_b", "_c", "_d", "useTranslation", "visible", "setVisible", "setSelection", "setAction", "setAddTags", "setRemoveTags", "submitting", "setSubmitting", "confirmDelete", "setConfirmDelete", "confirmPublic", "setConfirmPublic", "validationMsg", "setValidationMsg", "errorFadingOut", "setErrorFadingOut", "validationTimer", "fadeTimer", "a", "app", "suggestEnabled", "suggestUseReturnKey", "bulkFilter", "bulkSharedp", "bulkTags", "bulkQuery", "bids", "useBookmarksStore", "s", "b", "pageCount", "selectionCount", "reason", "isVisuallyDisabled", "removeTagsRef", "removeSuggestionState", "closeRemoveSuggestions", "onRemoveTagsChange", "onRemoveTagsKeyDown", "onRemoveTagsSelect", "onRemoveSuggestionHover", "onRemoveSuggestionPick", "useTagSuggestions", "addTagsRef", "addSuggestionState", "closeAddSuggestions", "onAddTagsChange", "onAddTagsKeyDown", "onAddTagsSelect", "onAddSuggestionHover", "onAddSuggestionPick", "clearValidationTimers", "resetForm", "el", "handler", "v", "showValidationMsg", "msg", "handleSubmit", "addTagsTrimmed", "normalizeTags", "removeTagsTrimmed", "r", "res", "bulkEdit", "apiErrorMsg", "err", "TimeoutError", "toggleAction", "cur", "TagSuggestionsDropdown", "import_react", "import_jsx_runtime", "toTextareaPreview", "input", "lines", "x", "idx", "React", "NList", "initial", "useTranslation", "a", "app", "previewNotes", "linkToFilterSingle", "slug", "fromNullableStr", "note", "fromNowVal", "fromNow", "shdatetime", "import_react", "import_jsx_runtime", "toTextarea", "input", "lines", "x", "idx", "React", "NNote", "initial", "useTranslation", "a", "app", "note", "setNote", "editNoteState", "setEditNoteState", "deleteAsk", "setDeleteAsk", "edit", "setEdit", "destroyed", "setDestroyed", "apiError", "setApiError", "fromNowVal", "fromNow", "notetextid", "startEdit", "next", "qs", "curQuerystring", "q", "lookupQueryStringValue", "closeWindow", "setFocus", "onDestroy", "res", "destroyNote", "apiErrorMsg", "err", "TimeoutError", "onSubmit", "e", "editNote", "ref", "org", "fromNullableStr", "__spreadProps", "__spreadValues", "Markdown", "shdatetime", "import_react", "import_jsx_runtime", "disabledReason", "selection", "action", "navLink", "current", "value", "label", "onClick", "e", "NoteBulkEdit", "ncount", "_a", "_b", "_c", "useTranslation", "visible", "setVisible", "setSelection", "setAction", "submitting", "setSubmitting", "confirmDelete", "setConfirmDelete", "confirmPublic", "setConfirmPublic", "validationMsg", "setValidationMsg", "errorFadingOut", "setErrorFadingOut", "validationTimer", "fadeTimer", "a", "app", "bulkQuery", "bulkSharedp", "nids", "n", "pageCount", "selectionCount", "reason", "isVisuallyDisabled", "clearValidationTimers", "resetForm", "el", "handler", "v", "showValidationMsg", "msg", "handleSubmit", "r", "res", "noteBulkEdit", "apiErrorMsg", "err", "TimeoutError", "toggleAction", "cur", "import_react", "useTagCloudStore", "create", "set", "mode", "tagcloud", "tagCloudModeToF", "mode", "n", "s", "tags", "lowerBound", "tagCloudModeFromF", "isExpanded", "setExpanded", "expanded", "__spreadProps", "__spreadValues", "import_jsx_runtime", "bindTagCloudHeader", "renderElSelector", "container", "e", "target", "parsed", "readTagCloudHeaderAction", "mode", "useTagCloudStore", "applyTagCloudMode", "setExpanded", "isExpanded", "next", "isActive", "relatedTags", "currentRelatedTags", "updateHeaderUI", "btn", "label", "state", "el", "app", "updateTagCloudMode", "tagCloudModeFromF", "TagCloudBody", "initialMode", "s", "tagcloud", "setMode", "setTagCloud", "React", "fetchTagCloud", "m", "tc", "getTagCloud", "curtags", "renderLinks", "a", "cur", "tag", "linkToFilterTag", "rest", "fromNullableStr", "tagCounts", "cMin", "cMax", "x", "y", "c", "kLower", "fontsize", "rescale", "opacity", "style", "includeExcludeLink", "t", "encodeTag", "f", "v", "l", "h", "denom", "import_jsx_runtime", "selectEl", "selector", "viewRendered", "el", "RenderReady", "children", "renderView", "renderElSelector", "node", "logoutE", "logout", "renderBookmarks", "bmarks", "BList", "renderBulkEdit", "bcount", "BulkEdit", "renderTagCloud", "tagCloudMode", "TagCloudBody", "tagCloudModeToF", "renderAddForm", "renderElSelector", "bmark", "renderView", "AddForm", "renderNotes", "notes", "NList", "renderNoteBulkEdit", "ncount", "NoteBulkEdit", "renderNote", "note", "NNote", "renderAccountSettings", "accountSettings", "AccountSettingsView", "initColorSchemeToggle", "isColorSchemePreference", "value", "getEffectiveColorScheme", "explicit", "applyColorSchemePreference", "preference", "colorSchemeStorageKey", "stored", "toggleEl", "e", "next"] +}
+ static/js/app-LILLUWFD.min.js.map.gz view
binary file changed (absent → 428454 bytes)
− static/js/app-REOQEZQK.min.js
@@ -1,76 +0,0 @@-var F1=Object.create;var Bc=Object.defineProperty,J1=Object.defineProperties,I1=Object.getOwnPropertyDescriptor,P1=Object.getOwnPropertyDescriptors,W1=Object.getOwnPropertyNames,ao=Object.getOwnPropertySymbols,eT=Object.getPrototypeOf,Hc=Object.prototype.hasOwnProperty,Zh=Object.prototype.propertyIsEnumerable;var Fh=e=>{throw TypeError(e)};var Uc=(e,t,n)=>t in e?Bc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,T=(e,t)=>{for(var n in t||(t={}))Hc.call(t,n)&&Uc(e,n,t[n]);if(ao)for(var n of ao(t))Zh.call(t,n)&&Uc(e,n,t[n]);return e},L=(e,t)=>J1(e,P1(t));var ia=(e,t)=>{var n={};for(var a in e)Hc.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&ao)for(var a of ao(e))t.indexOf(a)<0&&Zh.call(e,a)&&(n[a]=e[a]);return n};var Kt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var tT=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of W1(t))!Hc.call(e,i)&&i!==n&&Bc(e,i,{get:()=>t[i],enumerable:!(a=I1(t,i))||a.enumerable});return e};var Q=(e,t,n)=>(n=e!=null?F1(eT(e)):{},tT(t||!e||!e.__esModule?Bc(n,"default",{value:e,enumerable:!0}):n,e));var G=(e,t,n)=>Uc(e,typeof t!="symbol"?t+"":t,n),qc=(e,t,n)=>t.has(e)||Fh("Cannot "+n);var E=(e,t,n)=>(qc(e,t,"read from private field"),n?n.call(e):t.get(e)),Dt=(e,t,n)=>t.has(e)?Fh("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),Tt=(e,t,n,a)=>(qc(e,t,"write to private field"),a?a.call(e,n):t.set(e,n),n),H=(e,t,n)=>(qc(e,t,"access private method"),n);var jc=(e,t,n,a)=>({set _(i){Tt(e,t,i,n)},get _(){return E(e,t,a)}});var Mm=Kt(P=>{"use strict";var lf=Symbol.for("react.transitional.element"),LT=Symbol.for("react.portal"),UT=Symbol.for("react.fragment"),BT=Symbol.for("react.strict_mode"),HT=Symbol.for("react.profiler"),qT=Symbol.for("react.consumer"),jT=Symbol.for("react.context"),VT=Symbol.for("react.forward_ref"),YT=Symbol.for("react.suspense"),GT=Symbol.for("react.memo"),Nm=Symbol.for("react.lazy"),KT=Symbol.for("react.activity"),km=Symbol.iterator;function XT(e){return e===null||typeof e!="object"?null:(e=km&&e[km]||e["@@iterator"],typeof e=="function"?e:null)}var Rm={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Om=Object.assign,Cm={};function il(e,t,n){this.props=e,this.context=t,this.refs=Cm,this.updater=n||Rm}il.prototype.isReactComponent={};il.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};il.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function _m(){}_m.prototype=il.prototype;function rf(e,t,n){this.props=e,this.context=t,this.refs=Cm,this.updater=n||Rm}var sf=rf.prototype=new _m;sf.constructor=rf;Om(sf,il.prototype);sf.isPureReactComponent=!0;var Em=Array.isArray;function af(){}var _e={H:null,A:null,T:null,S:null},Dm=Object.prototype.hasOwnProperty;function of(e,t,n){var a=n.ref;return{$$typeof:lf,type:e,key:t,ref:a!==void 0?a:null,props:n}}function $T(e,t){return of(e.type,t,e.props)}function uf(e){return typeof e=="object"&&e!==null&&e.$$typeof===lf}function QT(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var Am=/\/+/g;function nf(e,t){return typeof e=="object"&&e!==null&&e.key!=null?QT(""+e.key):t.toString(36)}function ZT(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(af,af):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function al(e,t,n,a,i){var l=typeof e;(l==="undefined"||l==="boolean")&&(e=null);var r=!1;if(e===null)r=!0;else switch(l){case"bigint":case"string":case"number":r=!0;break;case"object":switch(e.$$typeof){case lf:case LT:r=!0;break;case Nm:return r=e._init,al(r(e._payload),t,n,a,i)}}if(r)return i=i(e),r=a===""?"."+nf(e,0):a,Em(i)?(n="",r!=null&&(n=r.replace(Am,"$&/")+"/"),al(i,t,n,"",function(u){return u})):i!=null&&(uf(i)&&(i=$T(i,n+(i.key==null||e&&e.key===i.key?"":(""+i.key).replace(Am,"$&/")+"/")+r)),t.push(i)),1;r=0;var s=a===""?".":a+":";if(Em(e))for(var o=0;o<e.length;o++)a=e[o],l=s+nf(a,o),r+=al(a,t,n,l,i);else if(o=XT(e),typeof o=="function")for(e=o.call(e),o=0;!(a=e.next()).done;)a=a.value,l=s+nf(a,o++),r+=al(a,t,n,l,i);else if(l==="object"){if(typeof e.then=="function")return al(ZT(e),t,n,a,i);throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return r}function ho(e,t,n){if(e==null)return e;var a=[],i=0;return al(e,a,"","",function(l){return t.call(n,l,i++)}),a}function FT(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(n){(e._status===0||e._status===-1)&&(e._status=1,e._result=n)},function(n){(e._status===0||e._status===-1)&&(e._status=2,e._result=n)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var wm=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},JT={map:ho,forEach:function(e,t,n){ho(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ho(e,function(){t++}),t},toArray:function(e){return ho(e,function(t){return t})||[]},only:function(e){if(!uf(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};P.Activity=KT;P.Children=JT;P.Component=il;P.Fragment=UT;P.Profiler=HT;P.PureComponent=rf;P.StrictMode=BT;P.Suspense=YT;P.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=_e;P.__COMPILER_RUNTIME={__proto__:null,c:function(e){return _e.H.useMemoCache(e)}};P.cache=function(e){return function(){return e.apply(null,arguments)}};P.cacheSignal=function(){return null};P.cloneElement=function(e,t,n){if(e==null)throw Error("The argument must be a React element, but you passed "+e+".");var a=Om({},e.props),i=e.key;if(t!=null)for(l in t.key!==void 0&&(i=""+t.key),t)!Dm.call(t,l)||l==="key"||l==="__self"||l==="__source"||l==="ref"&&t.ref===void 0||(a[l]=t[l]);var l=arguments.length-2;if(l===1)a.children=n;else if(1<l){for(var r=Array(l),s=0;s<l;s++)r[s]=arguments[s+2];a.children=r}return of(e.type,i,a)};P.createContext=function(e){return e={$$typeof:jT,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:qT,_context:e},e};P.createElement=function(e,t,n){var a,i={},l=null;if(t!=null)for(a in t.key!==void 0&&(l=""+t.key),t)Dm.call(t,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(i[a]=t[a]);var r=arguments.length-2;if(r===1)i.children=n;else if(1<r){for(var s=Array(r),o=0;o<r;o++)s[o]=arguments[o+2];i.children=s}if(e&&e.defaultProps)for(a in r=e.defaultProps,r)i[a]===void 0&&(i[a]=r[a]);return of(e,l,i)};P.createRef=function(){return{current:null}};P.forwardRef=function(e){return{$$typeof:VT,render:e}};P.isValidElement=uf;P.lazy=function(e){return{$$typeof:Nm,_payload:{_status:-1,_result:e},_init:FT}};P.memo=function(e,t){return{$$typeof:GT,type:e,compare:t===void 0?null:t}};P.startTransition=function(e){var t=_e.T,n={};_e.T=n;try{var a=e(),i=_e.S;i!==null&&i(n,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(af,wm)}catch(l){wm(l)}finally{t!==null&&n.types!==null&&(t.types=n.types),_e.T=t}};P.unstable_useCacheRefresh=function(){return _e.H.useCacheRefresh()};P.use=function(e){return _e.H.use(e)};P.useActionState=function(e,t,n){return _e.H.useActionState(e,t,n)};P.useCallback=function(e,t){return _e.H.useCallback(e,t)};P.useContext=function(e){return _e.H.useContext(e)};P.useDebugValue=function(){};P.useDeferredValue=function(e,t){return _e.H.useDeferredValue(e,t)};P.useEffect=function(e,t){return _e.H.useEffect(e,t)};P.useEffectEvent=function(e){return _e.H.useEffectEvent(e)};P.useId=function(){return _e.H.useId()};P.useImperativeHandle=function(e,t,n){return _e.H.useImperativeHandle(e,t,n)};P.useInsertionEffect=function(e,t){return _e.H.useInsertionEffect(e,t)};P.useLayoutEffect=function(e,t){return _e.H.useLayoutEffect(e,t)};P.useMemo=function(e,t){return _e.H.useMemo(e,t)};P.useOptimistic=function(e,t){return _e.H.useOptimistic(e,t)};P.useReducer=function(e,t,n){return _e.H.useReducer(e,t,n)};P.useRef=function(e){return _e.H.useRef(e)};P.useState=function(e){return _e.H.useState(e)};P.useSyncExternalStore=function(e,t,n){return _e.H.useSyncExternalStore(e,t,n)};P.useTransition=function(){return _e.H.useTransition()};P.version="19.2.6"});var be=Kt((GN,zm)=>{"use strict";zm.exports=Mm()});var Um=Kt((KN,Lm)=>{Lm.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}});var Fm=Kt(Zm=>{"use strict";var rl=be();function rx(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var sx=typeof Object.is=="function"?Object.is:rx,ox=rl.useState,ux=rl.useEffect,cx=rl.useLayoutEffect,fx=rl.useDebugValue;function dx(e,t){var n=t(),a=ox({inst:{value:n,getSnapshot:t}}),i=a[0].inst,l=a[1];return cx(function(){i.value=n,i.getSnapshot=t,hf(i)&&l({inst:i})},[e,n,t]),ux(function(){return hf(i)&&l({inst:i}),e(function(){hf(i)&&l({inst:i})})},[e]),fx(n),n}function hf(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!sx(e,n)}catch(a){return!0}}function px(e,t){return t()}var hx=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?px:dx;Zm.useSyncExternalStore=rl.useSyncExternalStore!==void 0?rl.useSyncExternalStore:hx});var Im=Kt((YR,Jm)=>{"use strict";Jm.exports=Fm()});var hg=Kt(Be=>{"use strict";function vf(e,t){var n=e.length;e.push(t);e:for(;0<n;){var a=n-1>>>1,i=e[a];if(0<ko(i,t))e[a]=t,e[n]=i,n=a;else break e}}function Bn(e){return e.length===0?null:e[0]}function Ao(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var a=0,i=e.length,l=i>>>1;a<l;){var r=2*(a+1)-1,s=e[r],o=r+1,u=e[o];if(0>ko(s,n))o<i&&0>ko(u,s)?(e[a]=u,e[o]=n,a=o):(e[a]=s,e[r]=n,a=r);else if(o<i&&0>ko(u,n))e[a]=u,e[o]=n,a=o;else break e}}return t}function ko(e,t){var n=e.sortIndex-t.sortIndex;return n!==0?n:e.id-t.id}Be.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(lg=performance,Be.unstable_now=function(){return lg.now()}):(gf=Date,rg=gf.now(),Be.unstable_now=function(){return gf.now()-rg});var lg,gf,rg,sa=[],Ma=[],wx=1,rn=null,kt=3,Sf=!1,Cr=!1,_r=!1,Tf=!1,ug=typeof setTimeout=="function"?setTimeout:null,cg=typeof clearTimeout=="function"?clearTimeout:null,sg=typeof setImmediate<"u"?setImmediate:null;function Eo(e){for(var t=Bn(Ma);t!==null;){if(t.callback===null)Ao(Ma);else if(t.startTime<=e)Ao(Ma),t.sortIndex=t.expirationTime,vf(sa,t);else break;t=Bn(Ma)}}function xf(e){if(_r=!1,Eo(e),!Cr)if(Bn(sa)!==null)Cr=!0,fl||(fl=!0,cl());else{var t=Bn(Ma);t!==null&&kf(xf,t.startTime-e)}}var fl=!1,Dr=-1,fg=5,dg=-1;function pg(){return Tf?!0:!(Be.unstable_now()-dg<fg)}function yf(){if(Tf=!1,fl){var e=Be.unstable_now();dg=e;var t=!0;try{e:{Cr=!1,_r&&(_r=!1,cg(Dr),Dr=-1),Sf=!0;var n=kt;try{t:{for(Eo(e),rn=Bn(sa);rn!==null&&!(rn.expirationTime>e&&pg());){var a=rn.callback;if(typeof a=="function"){rn.callback=null,kt=rn.priorityLevel;var i=a(rn.expirationTime<=e);if(e=Be.unstable_now(),typeof i=="function"){rn.callback=i,Eo(e),t=!0;break t}rn===Bn(sa)&&Ao(sa),Eo(e)}else Ao(sa);rn=Bn(sa)}if(rn!==null)t=!0;else{var l=Bn(Ma);l!==null&&kf(xf,l.startTime-e),t=!1}}break e}finally{rn=null,kt=n,Sf=!1}t=void 0}}finally{t?cl():fl=!1}}}var cl;typeof sg=="function"?cl=function(){sg(yf)}:typeof MessageChannel<"u"?(bf=new MessageChannel,og=bf.port2,bf.port1.onmessage=yf,cl=function(){og.postMessage(null)}):cl=function(){ug(yf,0)};var bf,og;function kf(e,t){Dr=ug(function(){e(Be.unstable_now())},t)}Be.unstable_IdlePriority=5;Be.unstable_ImmediatePriority=1;Be.unstable_LowPriority=4;Be.unstable_NormalPriority=3;Be.unstable_Profiling=null;Be.unstable_UserBlockingPriority=2;Be.unstable_cancelCallback=function(e){e.callback=null};Be.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):fg=0<e?Math.floor(1e3/e):5};Be.unstable_getCurrentPriorityLevel=function(){return kt};Be.unstable_next=function(e){switch(kt){case 1:case 2:case 3:var t=3;break;default:t=kt}var n=kt;kt=t;try{return e()}finally{kt=n}};Be.unstable_requestPaint=function(){Tf=!0};Be.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=kt;kt=e;try{return t()}finally{kt=n}};Be.unstable_scheduleCallback=function(e,t,n){var a=Be.unstable_now();switch(typeof n=="object"&&n!==null?(n=n.delay,n=typeof n=="number"&&0<n?a+n:a):n=a,e){case 1:var i=-1;break;case 2:i=250;break;case 5:i=1073741823;break;case 4:i=1e4;break;default:i=5e3}return i=n+i,e={id:wx++,callback:t,priorityLevel:e,startTime:n,expirationTime:i,sortIndex:-1},n>a?(e.sortIndex=n,vf(Ma,e),Bn(sa)===null&&e===Bn(Ma)&&(_r?(cg(Dr),Dr=-1):_r=!0,kf(xf,n-a))):(e.sortIndex=i,vf(sa,e),Cr||Sf||(Cr=!0,fl||(fl=!0,cl()))),e};Be.unstable_shouldYield=pg;Be.unstable_wrapCallback=function(e){var t=kt;return function(){var n=kt;kt=t;try{return e.apply(this,arguments)}finally{kt=n}}}});var gg=Kt((XO,mg)=>{"use strict";mg.exports=hg()});var bg=Kt(Nt=>{"use strict";var Nx=be();function yg(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function za(){}var wt={d:{f:za,r:function(){throw Error(yg(522))},D:za,C:za,L:za,m:za,X:za,S:za,M:za},p:0,findDOMNode:null},Rx=Symbol.for("react.portal");function Ox(e,t,n){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:Rx,key:a==null?null:""+a,children:e,containerInfo:t,implementation:n}}var Mr=Nx.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function wo(e,t){if(e==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}Nt.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=wt;Nt.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(yg(299));return Ox(e,t,null,n)};Nt.flushSync=function(e){var t=Mr.T,n=wt.p;try{if(Mr.T=null,wt.p=2,e)return e()}finally{Mr.T=t,wt.p=n,wt.d.f()}};Nt.preconnect=function(e,t){typeof e=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,wt.d.C(e,t))};Nt.prefetchDNS=function(e){typeof e=="string"&&wt.d.D(e)};Nt.preinit=function(e,t){if(typeof e=="string"&&t&&typeof t.as=="string"){var n=t.as,a=wo(n,t.crossOrigin),i=typeof t.integrity=="string"?t.integrity:void 0,l=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;n==="style"?wt.d.S(e,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:i,fetchPriority:l}):n==="script"&&wt.d.X(e,{crossOrigin:a,integrity:i,fetchPriority:l,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};Nt.preinitModule=function(e,t){if(typeof e=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var n=wo(t.as,t.crossOrigin);wt.d.M(e,{crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&wt.d.M(e)};Nt.preload=function(e,t){if(typeof e=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var n=t.as,a=wo(n,t.crossOrigin);wt.d.L(e,n,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};Nt.preloadModule=function(e,t){if(typeof e=="string")if(t){var n=wo(t.as,t.crossOrigin);wt.d.m(e,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else wt.d.m(e)};Nt.requestFormReset=function(e){wt.d.r(e)};Nt.unstable_batchedUpdates=function(e,t){return e(t)};Nt.useFormState=function(e,t,n){return Mr.H.useFormState(e,t,n)};Nt.useFormStatus=function(){return Mr.H.useHostTransitionStatus()};Nt.version="19.2.6"});var Tg=Kt((QO,Sg)=>{"use strict";function vg(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(vg)}catch(e){console.error(e)}}vg(),Sg.exports=bg()});var M0=Kt(Iu=>{"use strict";var nt=gg(),Qy=be(),Cx=Tg();function w(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Zy(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function vs(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function Fy(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function Jy(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function xg(e){if(vs(e)!==e)throw Error(w(188))}function _x(e){var t=e.alternate;if(!t){if(t=vs(e),t===null)throw Error(w(188));return t!==e?null:e}for(var n=e,a=t;;){var i=n.return;if(i===null)break;var l=i.alternate;if(l===null){if(a=i.return,a!==null){n=a;continue}break}if(i.child===l.child){for(l=i.child;l;){if(l===n)return xg(i),e;if(l===a)return xg(i),t;l=l.sibling}throw Error(w(188))}if(n.return!==a.return)n=i,a=l;else{for(var r=!1,s=i.child;s;){if(s===n){r=!0,n=i,a=l;break}if(s===a){r=!0,a=i,n=l;break}s=s.sibling}if(!r){for(s=l.child;s;){if(s===n){r=!0,n=l,a=i;break}if(s===a){r=!0,a=l,n=i;break}s=s.sibling}if(!r)throw Error(w(189))}}if(n.alternate!==a)throw Error(w(190))}if(n.tag!==3)throw Error(w(188));return n.stateNode.current===n?e:t}function Iy(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=Iy(e),t!==null)return t;e=e.sibling}return null}var ze=Object.assign,Dx=Symbol.for("react.element"),No=Symbol.for("react.transitional.element"),Vr=Symbol.for("react.portal"),yl=Symbol.for("react.fragment"),Py=Symbol.for("react.strict_mode"),ad=Symbol.for("react.profiler"),Wy=Symbol.for("react.consumer"),ma=Symbol.for("react.context"),Pd=Symbol.for("react.forward_ref"),id=Symbol.for("react.suspense"),ld=Symbol.for("react.suspense_list"),Wd=Symbol.for("react.memo"),La=Symbol.for("react.lazy"),rd=Symbol.for("react.activity"),Mx=Symbol.for("react.memo_cache_sentinel"),kg=Symbol.iterator;function zr(e){return e===null||typeof e!="object"?null:(e=kg&&e[kg]||e["@@iterator"],typeof e=="function"?e:null)}var zx=Symbol.for("react.client.reference");function sd(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===zx?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case yl:return"Fragment";case ad:return"Profiler";case Py:return"StrictMode";case id:return"Suspense";case ld:return"SuspenseList";case rd:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case Vr:return"Portal";case ma:return e.displayName||"Context";case Wy:return(e._context.displayName||"Context")+".Consumer";case Pd:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Wd:return t=e.displayName||null,t!==null?t:sd(e.type)||"Memo";case La:t=e._payload,e=e._init;try{return sd(e(t))}catch(n){}}return null}var Yr=Array.isArray,Z=Qy.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,fe=Cx.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Ai={pending:!1,data:null,method:null,action:null},od=[],bl=-1;function Yn(e){return{current:e}}function ut(e){0>bl||(e.current=od[bl],od[bl]=null,bl--)}function Ne(e,t){bl++,od[bl]=e.current,e.current=t}var Vn=Yn(null),ls=Yn(null),$a=Yn(null),ru=Yn(null);function su(e,t){switch(Ne($a,t),Ne(ls,e),Ne(Vn,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Cy(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Cy(t),e=v0(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}ut(Vn),Ne(Vn,e)}function Ul(){ut(Vn),ut(ls),ut($a)}function ud(e){e.memoizedState!==null&&Ne(ru,e);var t=Vn.current,n=v0(t,e.type);t!==n&&(Ne(ls,e),Ne(Vn,n))}function ou(e){ls.current===e&&(ut(Vn),ut(ls)),ru.current===e&&(ut(ru),gs._currentValue=Ai)}var Ef,Eg;function Ti(e){if(Ef===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);Ef=t&&t[1]||"",Eg=-1<n.stack.indexOf("\n at")?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return"\n"+Ef+e+Eg}var Af=!1;function wf(e,t){if(!e||Af)return"";Af=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var f=function(){throw Error()};if(Object.defineProperty(f.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(f,[])}catch(h){var d=h}Reflect.construct(e,[],f)}else{try{f.call()}catch(h){d=h}e.call(f.prototype)}}else{try{throw Error()}catch(h){d=h}(f=e())&&typeof f.catch=="function"&&f.catch(function(){})}}catch(h){if(h&&d&&typeof h.stack=="string")return[h.stack,d.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var i=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");i&&i.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var l=a.DetermineComponentFrameRoot(),r=l[0],s=l[1];if(r&&s){var o=r.split("\n"),u=s.split("\n");for(i=a=0;a<o.length&&!o[a].includes("DetermineComponentFrameRoot");)a++;for(;i<u.length&&!u[i].includes("DetermineComponentFrameRoot");)i++;if(a===o.length||i===u.length)for(a=o.length-1,i=u.length-1;1<=a&&0<=i&&o[a]!==u[i];)i--;for(;1<=a&&0<=i;a--,i--)if(o[a]!==u[i]){if(a!==1||i!==1)do if(a--,i--,0>i||o[a]!==u[i]){var c="\n"+o[a].replace(" at new "," at ");return e.displayName&&c.includes("<anonymous>")&&(c=c.replace("<anonymous>",e.displayName)),c}while(1<=a&&0<=i);break}}}finally{Af=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Ti(n):""}function Lx(e,t){switch(e.tag){case 26:case 27:case 5:return Ti(e.type);case 16:return Ti("Lazy");case 13:return e.child!==t&&t!==null?Ti("Suspense Fallback"):Ti("Suspense");case 19:return Ti("SuspenseList");case 0:case 15:return wf(e.type,!1);case 11:return wf(e.type.render,!1);case 1:return wf(e.type,!0);case 31:return Ti("Activity");default:return""}}function Ag(e){try{var t="",n=null;do t+=Lx(e,n),n=e,e=e.return;while(e);return t}catch(a){return"\nError generating stack: "+a.message+"\n"+a.stack}}var cd=Object.prototype.hasOwnProperty,ep=nt.unstable_scheduleCallback,Nf=nt.unstable_cancelCallback,Ux=nt.unstable_shouldYield,Bx=nt.unstable_requestPaint,Ft=nt.unstable_now,Hx=nt.unstable_getCurrentPriorityLevel,eb=nt.unstable_ImmediatePriority,tb=nt.unstable_UserBlockingPriority,uu=nt.unstable_NormalPriority,qx=nt.unstable_LowPriority,nb=nt.unstable_IdlePriority,jx=nt.log,Vx=nt.unstable_setDisableYieldValue,Ss=null,Jt=null;function Va(e){if(typeof jx=="function"&&Vx(e),Jt&&typeof Jt.setStrictMode=="function")try{Jt.setStrictMode(Ss,e)}catch(t){}}var It=Math.clz32?Math.clz32:Kx,Yx=Math.log,Gx=Math.LN2;function Kx(e){return e>>>=0,e===0?32:31-(Yx(e)/Gx|0)|0}var Ro=256,Oo=262144,Co=4194304;function xi(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Lu(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var i=0,l=e.suspendedLanes,r=e.pingedLanes;e=e.warmLanes;var s=a&134217727;return s!==0?(a=s&~l,a!==0?i=xi(a):(r&=s,r!==0?i=xi(r):n||(n=s&~e,n!==0&&(i=xi(n))))):(s=a&~l,s!==0?i=xi(s):r!==0?i=xi(r):n||(n=a&~e,n!==0&&(i=xi(n)))),i===0?0:t!==0&&t!==i&&(t&l)===0&&(l=i&-i,n=t&-t,l>=n||l===32&&(n&4194048)!==0)?t:i}function Ts(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Xx(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ab(){var e=Co;return Co<<=1,(Co&62914560)===0&&(Co=4194304),e}function Rf(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function xs(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function $x(e,t,n,a,i,l){var r=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,o=e.expirationTimes,u=e.hiddenUpdates;for(n=r&~n;0<n;){var c=31-It(n),f=1<<c;s[c]=0,o[c]=-1;var d=u[c];if(d!==null)for(u[c]=null,c=0;c<d.length;c++){var h=d[c];h!==null&&(h.lane&=-536870913)}n&=~f}a!==0&&ib(e,a,0),l!==0&&i===0&&e.tag!==0&&(e.suspendedLanes|=l&~(r&~t))}function ib(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var a=31-It(t);e.entangledLanes|=t,e.entanglements[a]=e.entanglements[a]|1073741824|n&261930}function lb(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-It(n),i=1<<a;i&t|e[a]&t&&(e[a]|=t),n&=~i}}function rb(e,t){var n=t&-t;return n=(n&42)!==0?1:tp(n),(n&(e.suspendedLanes|t))!==0?0:n}function tp(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function np(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function sb(){var e=fe.p;return e!==0?e:(e=window.event,e===void 0?32:C0(e.type))}function wg(e,t){var n=fe.p;try{return fe.p=e,t()}finally{fe.p=n}}var li=Math.random().toString(36).slice(2),pt="__reactFiber$"+li,Ht="__reactProps$"+li,Ql="__reactContainer$"+li,fd="__reactEvents$"+li,Qx="__reactListeners$"+li,Zx="__reactHandles$"+li,Ng="__reactResources$"+li,ks="__reactMarker$"+li;function ap(e){delete e[pt],delete e[Ht],delete e[fd],delete e[Qx],delete e[Zx]}function vl(e){var t=e[pt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Ql]||n[pt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Ly(e);e!==null;){if(n=e[pt])return n;e=Ly(e)}return t}e=n,n=e.parentNode}return null}function Zl(e){if(e=e[pt]||e[Ql]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Gr(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(w(33))}function Ol(e){var t=e[Ng];return t||(t=e[Ng]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function ot(e){e[ks]=!0}var ob=new Set,ub={};function Li(e,t){Bl(e,t),Bl(e+"Capture",t)}function Bl(e,t){for(ub[e]=t,e=0;e<t.length;e++)ob.add(t[e])}var Fx=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Rg={},Og={};function Jx(e){return cd.call(Og,e)?!0:cd.call(Rg,e)?!1:Fx.test(e)?Og[e]=!0:(Rg[e]=!0,!1)}function Xo(e,t,n){if(Jx(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+n)}}function _o(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+n)}}function oa(e,t,n,a){if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttributeNS(t,n,""+a)}}function on(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function cb(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ix(e,t,n){var a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var i=a.get,l=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(r){n=""+r,l.call(this,r)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return n},setValue:function(r){n=""+r},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function dd(e){if(!e._valueTracker){var t=cb(e)?"checked":"value";e._valueTracker=Ix(e,t,""+e[t])}}function fb(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=cb(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function cu(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch(t){return e.body}}var Px=/[\n"\\]/g;function fn(e){return e.replace(Px,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function pd(e,t,n,a,i,l,r,s){e.name="",r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"?e.type=r:e.removeAttribute("type"),t!=null?r==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+on(t)):e.value!==""+on(t)&&(e.value=""+on(t)):r!=="submit"&&r!=="reset"||e.removeAttribute("value"),t!=null?hd(e,r,on(t)):n!=null?hd(e,r,on(n)):a!=null&&e.removeAttribute("value"),i==null&&l!=null&&(e.defaultChecked=!!l),i!=null&&(e.checked=i&&typeof i!="function"&&typeof i!="symbol"),s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?e.name=""+on(s):e.removeAttribute("name")}function db(e,t,n,a,i,l,r,s){if(l!=null&&typeof l!="function"&&typeof l!="symbol"&&typeof l!="boolean"&&(e.type=l),t!=null||n!=null){if(!(l!=="submit"&&l!=="reset"||t!=null)){dd(e);return}n=n!=null?""+on(n):"",t=t!=null?""+on(t):n,s||t===e.value||(e.value=t),e.defaultValue=t}a=a!=null?a:i,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=s?e.checked:!!a,e.defaultChecked=!!a,r!=null&&typeof r!="function"&&typeof r!="symbol"&&typeof r!="boolean"&&(e.name=r),dd(e)}function hd(e,t,n){t==="number"&&cu(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Cl(e,t,n,a){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t["$"+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty("$"+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&a&&(e[n].defaultSelected=!0)}else{for(n=""+on(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,a&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function pb(e,t,n){if(t!=null&&(t=""+on(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n!=null?""+on(n):""}function hb(e,t,n,a){if(t==null){if(a!=null){if(n!=null)throw Error(w(92));if(Yr(a)){if(1<a.length)throw Error(w(93));a=a[0]}n=a}n==null&&(n=""),t=n}n=on(t),e.defaultValue=n,a=e.textContent,a===n&&a!==""&&a!==null&&(e.value=a),dd(e)}function Hl(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Wx=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Cg(e,t,n){var a=t.indexOf("--")===0;n==null||typeof n=="boolean"||n===""?a?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":a?e.setProperty(t,n):typeof n!="number"||n===0||Wx.has(t)?t==="float"?e.cssFloat=n:e[t]=(""+n).trim():e[t]=n+"px"}function mb(e,t,n){if(t!=null&&typeof t!="object")throw Error(w(62));if(e=e.style,n!=null){for(var a in n)!n.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?e.setProperty(a,""):a==="float"?e.cssFloat="":e[a]="");for(var i in t)a=t[i],t.hasOwnProperty(i)&&n[i]!==a&&Cg(e,i,a)}else for(var l in t)t.hasOwnProperty(l)&&Cg(e,l,t[l])}function ip(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ek=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),tk=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function $o(e){return tk.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function ga(){}var md=null;function lp(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Sl=null,_l=null;function _g(e){var t=Zl(e);if(t&&(e=t.stateNode)){var n=e[Ht]||null;e:switch(e=t.stateNode,t.type){case"input":if(pd(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll('input[name="'+fn(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var i=a[Ht]||null;if(!i)throw Error(w(90));pd(a,i.value,i.defaultValue,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name)}}for(t=0;t<n.length;t++)a=n[t],a.form===e.form&&fb(a)}break e;case"textarea":pb(e,n.value,n.defaultValue);break e;case"select":t=n.value,t!=null&&Cl(e,!!n.multiple,t,!1)}}}var Of=!1;function gb(e,t,n){if(Of)return e(t,n);Of=!0;try{var a=e(t);return a}finally{if(Of=!1,(Sl!==null||_l!==null)&&(Qu(),Sl&&(t=Sl,e=_l,_l=Sl=null,_g(t),e)))for(t=0;t<e.length;t++)_g(e[t])}}function rs(e,t){var n=e.stateNode;if(n===null)return null;var a=n[Ht]||null;if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error(w(231,t,typeof n));return n}var Ta=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),gd=!1;if(Ta)try{dl={},Object.defineProperty(dl,"passive",{get:function(){gd=!0}}),window.addEventListener("test",dl,dl),window.removeEventListener("test",dl,dl)}catch(e){gd=!1}var dl,Ya=null,rp=null,Qo=null;function yb(){if(Qo)return Qo;var e,t=rp,n=t.length,a,i="value"in Ya?Ya.value:Ya.textContent,l=i.length;for(e=0;e<n&&t[e]===i[e];e++);var r=n-e;for(a=1;a<=r&&t[n-a]===i[l-a];a++);return Qo=i.slice(e,1<a?1-a:void 0)}function Zo(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function Do(){return!0}function Dg(){return!1}function qt(e){function t(n,a,i,l,r){this._reactName=n,this._targetInst=i,this.type=a,this.nativeEvent=l,this.target=r,this.currentTarget=null;for(var s in e)e.hasOwnProperty(s)&&(n=e[s],this[s]=n?n(l):l[s]);return this.isDefaultPrevented=(l.defaultPrevented!=null?l.defaultPrevented:l.returnValue===!1)?Do:Dg,this.isPropagationStopped=Dg,this}return ze(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=Do)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=Do)},persist:function(){},isPersistent:Do}),t}var Ui={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Uu=qt(Ui),Es=ze({},Ui,{view:0,detail:0}),nk=qt(Es),Cf,_f,Lr,Bu=ze({},Es,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:sp,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Lr&&(Lr&&e.type==="mousemove"?(Cf=e.screenX-Lr.screenX,_f=e.screenY-Lr.screenY):_f=Cf=0,Lr=e),Cf)},movementY:function(e){return"movementY"in e?e.movementY:_f}}),Mg=qt(Bu),ak=ze({},Bu,{dataTransfer:0}),ik=qt(ak),lk=ze({},Es,{relatedTarget:0}),Df=qt(lk),rk=ze({},Ui,{animationName:0,elapsedTime:0,pseudoElement:0}),sk=qt(rk),ok=ze({},Ui,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),uk=qt(ok),ck=ze({},Ui,{data:0}),zg=qt(ck),fk={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},dk={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},pk={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function hk(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=pk[e])?!!t[e]:!1}function sp(){return hk}var mk=ze({},Es,{key:function(e){if(e.key){var t=fk[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Zo(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?dk[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:sp,charCode:function(e){return e.type==="keypress"?Zo(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Zo(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),gk=qt(mk),yk=ze({},Bu,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Lg=qt(yk),bk=ze({},Es,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:sp}),vk=qt(bk),Sk=ze({},Ui,{propertyName:0,elapsedTime:0,pseudoElement:0}),Tk=qt(Sk),xk=ze({},Bu,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),kk=qt(xk),Ek=ze({},Ui,{newState:0,oldState:0}),Ak=qt(Ek),wk=[9,13,27,32],op=Ta&&"CompositionEvent"in window,$r=null;Ta&&"documentMode"in document&&($r=document.documentMode);var Nk=Ta&&"TextEvent"in window&&!$r,bb=Ta&&(!op||$r&&8<$r&&11>=$r),Ug=" ",Bg=!1;function vb(e,t){switch(e){case"keyup":return wk.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Sb(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Tl=!1;function Rk(e,t){switch(e){case"compositionend":return Sb(t);case"keypress":return t.which!==32?null:(Bg=!0,Ug);case"textInput":return e=t.data,e===Ug&&Bg?null:e;default:return null}}function Ok(e,t){if(Tl)return e==="compositionend"||!op&&vb(e,t)?(e=yb(),Qo=rp=Ya=null,Tl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return bb&&t.locale!=="ko"?null:t.data;default:return null}}var Ck={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hg(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!Ck[e.type]:t==="textarea"}function Tb(e,t,n,a){Sl?_l?_l.push(a):_l=[a]:Sl=a,t=Ru(t,"onChange"),0<t.length&&(n=new Uu("onChange","change",null,n,a),e.push({event:n,listeners:t}))}var Qr=null,ss=null;function _k(e){g0(e,0)}function Hu(e){var t=Gr(e);if(fb(t))return e}function qg(e,t){if(e==="change")return t}var xb=!1;Ta&&(Ta?(zo="oninput"in document,zo||(Mf=document.createElement("div"),Mf.setAttribute("oninput","return;"),zo=typeof Mf.oninput=="function"),Mo=zo):Mo=!1,xb=Mo&&(!document.documentMode||9<document.documentMode));var Mo,zo,Mf;function jg(){Qr&&(Qr.detachEvent("onpropertychange",kb),ss=Qr=null)}function kb(e){if(e.propertyName==="value"&&Hu(ss)){var t=[];Tb(t,ss,e,lp(e)),gb(_k,t)}}function Dk(e,t,n){e==="focusin"?(jg(),Qr=t,ss=n,Qr.attachEvent("onpropertychange",kb)):e==="focusout"&&jg()}function Mk(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Hu(ss)}function zk(e,t){if(e==="click")return Hu(t)}function Lk(e,t){if(e==="input"||e==="change")return Hu(t)}function Uk(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Wt=typeof Object.is=="function"?Object.is:Uk;function os(e,t){if(Wt(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var i=n[a];if(!cd.call(t,i)||!Wt(e[i],t[i]))return!1}return!0}function Vg(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Yg(e,t){var n=Vg(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Vg(n)}}function Eb(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Eb(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ab(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=cu(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch(a){n=!1}if(n)e=t.contentWindow;else break;t=cu(e.document)}return t}function up(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Bk=Ta&&"documentMode"in document&&11>=document.documentMode,xl=null,yd=null,Zr=null,bd=!1;function Gg(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;bd||xl==null||xl!==cu(a)||(a=xl,"selectionStart"in a&&up(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Zr&&os(Zr,a)||(Zr=a,a=Ru(yd,"onSelect"),0<a.length&&(t=new Uu("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=xl)))}function Si(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var kl={animationend:Si("Animation","AnimationEnd"),animationiteration:Si("Animation","AnimationIteration"),animationstart:Si("Animation","AnimationStart"),transitionrun:Si("Transition","TransitionRun"),transitionstart:Si("Transition","TransitionStart"),transitioncancel:Si("Transition","TransitionCancel"),transitionend:Si("Transition","TransitionEnd")},zf={},wb={};Ta&&(wb=document.createElement("div").style,"AnimationEvent"in window||(delete kl.animationend.animation,delete kl.animationiteration.animation,delete kl.animationstart.animation),"TransitionEvent"in window||delete kl.transitionend.transition);function Bi(e){if(zf[e])return zf[e];if(!kl[e])return e;var t=kl[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in wb)return zf[e]=t[n];return e}var Nb=Bi("animationend"),Rb=Bi("animationiteration"),Ob=Bi("animationstart"),Hk=Bi("transitionrun"),qk=Bi("transitionstart"),jk=Bi("transitioncancel"),Cb=Bi("transitionend"),_b=new Map,vd="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");vd.push("scrollEnd");function Nn(e,t){_b.set(e,t),Li(t,[e])}var fu=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},sn=[],El=0,cp=0;function qu(){for(var e=El,t=cp=El=0;t<e;){var n=sn[t];sn[t++]=null;var a=sn[t];sn[t++]=null;var i=sn[t];sn[t++]=null;var l=sn[t];if(sn[t++]=null,a!==null&&i!==null){var r=a.pending;r===null?i.next=i:(i.next=r.next,r.next=i),a.pending=i}l!==0&&Db(n,i,l)}}function ju(e,t,n,a){sn[El++]=e,sn[El++]=t,sn[El++]=n,sn[El++]=a,cp|=a,e.lanes|=a,e=e.alternate,e!==null&&(e.lanes|=a)}function fp(e,t,n,a){return ju(e,t,n,a),du(e)}function Hi(e,t){return ju(e,null,null,t),du(e)}function Db(e,t,n){e.lanes|=n;var a=e.alternate;a!==null&&(a.lanes|=n);for(var i=!1,l=e.return;l!==null;)l.childLanes|=n,a=l.alternate,a!==null&&(a.childLanes|=n),l.tag===22&&(e=l.stateNode,e===null||e._visibility&1||(i=!0)),e=l,l=l.return;return e.tag===3?(l=e.stateNode,i&&t!==null&&(i=31-It(n),e=l.hiddenUpdates,a=e[i],a===null?e[i]=[t]:a.push(t),t.lane=n|536870912),l):null}function du(e){if(50<as)throw as=0,jd=null,Error(w(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Al={};function Vk(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Qt(e,t,n,a){return new Vk(e,t,n,a)}function dp(e){return e=e.prototype,!(!e||!e.isReactComponent)}function ba(e,t){var n=e.alternate;return n===null?(n=Qt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&65011712,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n}function Mb(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Fo(e,t,n,a,i,l){var r=0;if(a=e,typeof e=="function")dp(e)&&(r=1);else if(typeof e=="string")r=KE(e,n,Vn.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case rd:return e=Qt(31,n,t,i),e.elementType=rd,e.lanes=l,e;case yl:return wi(n.children,i,l,t);case Py:r=8,i|=24;break;case ad:return e=Qt(12,n,t,i|2),e.elementType=ad,e.lanes=l,e;case id:return e=Qt(13,n,t,i),e.elementType=id,e.lanes=l,e;case ld:return e=Qt(19,n,t,i),e.elementType=ld,e.lanes=l,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ma:r=10;break e;case Wy:r=9;break e;case Pd:r=11;break e;case Wd:r=14;break e;case La:r=16,a=null;break e}r=29,n=Error(w(130,e===null?"null":typeof e,"")),a=null}return t=Qt(r,n,t,i),t.elementType=e,t.type=a,t.lanes=l,t}function wi(e,t,n,a){return e=Qt(7,e,a,t),e.lanes=n,e}function Lf(e,t,n){return e=Qt(6,e,null,t),e.lanes=n,e}function zb(e){var t=Qt(18,null,null,0);return t.stateNode=e,t}function Uf(e,t,n){return t=Qt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var Kg=new WeakMap;function dn(e,t){if(typeof e=="object"&&e!==null){var n=Kg.get(e);return n!==void 0?n:(t={value:e,source:t,stack:Ag(t)},Kg.set(e,t),t)}return{value:e,source:t,stack:Ag(t)}}var wl=[],Nl=0,pu=null,us=0,un=[],cn=0,ti=null,Hn=1,qn="";function pa(e,t){wl[Nl++]=us,wl[Nl++]=pu,pu=e,us=t}function Lb(e,t,n){un[cn++]=Hn,un[cn++]=qn,un[cn++]=ti,ti=e;var a=Hn;e=qn;var i=32-It(a)-1;a&=~(1<<i),n+=1;var l=32-It(t)+i;if(30<l){var r=i-i%5;l=(a&(1<<r)-1).toString(32),a>>=r,i-=r,Hn=1<<32-It(t)+i|n<<i|a,qn=l+e}else Hn=1<<l|n<<i|a,qn=e}function pp(e){e.return!==null&&(pa(e,1),Lb(e,1,0))}function hp(e){for(;e===pu;)pu=wl[--Nl],wl[Nl]=null,us=wl[--Nl],wl[Nl]=null;for(;e===ti;)ti=un[--cn],un[cn]=null,qn=un[--cn],un[cn]=null,Hn=un[--cn],un[cn]=null}function Ub(e,t){un[cn++]=Hn,un[cn++]=qn,un[cn++]=ti,Hn=t.id,qn=t.overflow,ti=e}var ht=null,Me=null,re=!1,Qa=null,pn=!1,Sd=Error(w(519));function ni(e){var t=Error(w(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw cs(dn(t,e)),Sd}function Xg(e){var t=e.stateNode,n=e.type,a=e.memoizedProps;switch(t[pt]=e,t[Ht]=a,n){case"dialog":ne("cancel",t),ne("close",t);break;case"iframe":case"object":case"embed":ne("load",t);break;case"video":case"audio":for(n=0;n<hs.length;n++)ne(hs[n],t);break;case"source":ne("error",t);break;case"img":case"image":case"link":ne("error",t),ne("load",t);break;case"details":ne("toggle",t);break;case"input":ne("invalid",t),db(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0);break;case"select":ne("invalid",t);break;case"textarea":ne("invalid",t),hb(t,a.value,a.defaultValue,a.children)}n=a.children,typeof n!="string"&&typeof n!="number"&&typeof n!="bigint"||t.textContent===""+n||a.suppressHydrationWarning===!0||b0(t.textContent,n)?(a.popover!=null&&(ne("beforetoggle",t),ne("toggle",t)),a.onScroll!=null&&ne("scroll",t),a.onScrollEnd!=null&&ne("scrollend",t),a.onClick!=null&&(t.onclick=ga),t=!0):t=!1,t||ni(e,!0)}function $g(e){for(ht=e.return;ht;)switch(ht.tag){case 5:case 31:case 13:pn=!1;return;case 27:case 3:pn=!0;return;default:ht=ht.return}}function pl(e){if(e!==ht)return!1;if(!re)return $g(e),re=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!=="form"&&n!=="button")||Xd(e.type,e.memoizedProps)),n=!n),n&&Me&&ni(e),$g(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(317));Me=zy(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(317));Me=zy(e)}else t===27?(t=Me,ri(e.type)?(e=Fd,Fd=null,Me=e):Me=t):Me=ht?mn(e.stateNode.nextSibling):null;return!0}function Ci(){Me=ht=null,re=!1}function Bf(){var e=Qa;return e!==null&&(Ut===null?Ut=e:Ut.push.apply(Ut,e),Qa=null),e}function cs(e){Qa===null?Qa=[e]:Qa.push(e)}var Td=Yn(null),qi=null,ya=null;function Ba(e,t,n){Ne(Td,t._currentValue),t._currentValue=n}function va(e){e._currentValue=Td.current,ut(Td)}function xd(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}}function kd(e,t,n,a){var i=e.child;for(i!==null&&(i.return=e);i!==null;){var l=i.dependencies;if(l!==null){var r=i.child;l=l.firstContext;e:for(;l!==null;){var s=l;l=i;for(var o=0;o<t.length;o++)if(s.context===t[o]){l.lanes|=n,s=l.alternate,s!==null&&(s.lanes|=n),xd(l.return,n,e),a||(r=null);break e}l=s.next}}else if(i.tag===18){if(r=i.return,r===null)throw Error(w(341));r.lanes|=n,l=r.alternate,l!==null&&(l.lanes|=n),xd(r,n,e),r=null}else r=i.child;if(r!==null)r.return=i;else for(r=i;r!==null;){if(r===e){r=null;break}if(i=r.sibling,i!==null){i.return=r.return,r=i;break}r=r.return}i=r}}function Fl(e,t,n,a){e=null;for(var i=t,l=!1;i!==null;){if(!l){if((i.flags&524288)!==0)l=!0;else if((i.flags&262144)!==0)break}if(i.tag===10){var r=i.alternate;if(r===null)throw Error(w(387));if(r=r.memoizedProps,r!==null){var s=i.type;Wt(i.pendingProps.value,r.value)||(e!==null?e.push(s):e=[s])}}else if(i===ru.current){if(r=i.alternate,r===null)throw Error(w(387));r.memoizedState.memoizedState!==i.memoizedState.memoizedState&&(e!==null?e.push(gs):e=[gs])}i=i.return}e!==null&&kd(t,e,n,a),t.flags|=262144}function hu(e){for(e=e.firstContext;e!==null;){if(!Wt(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function _i(e){qi=e,ya=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function mt(e){return Bb(qi,e)}function Lo(e,t){return qi===null&&_i(e),Bb(e,t)}function Bb(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},ya===null){if(e===null)throw Error(w(308));ya=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else ya=ya.next=t;return n}var Yk=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(n,a){e.push(a)}};this.abort=function(){t.aborted=!0,e.forEach(function(n){return n()})}},Gk=nt.unstable_scheduleCallback,Kk=nt.unstable_NormalPriority,Ie={$$typeof:ma,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function mp(){return{controller:new Yk,data:new Map,refCount:0}}function As(e){e.refCount--,e.refCount===0&&Gk(Kk,function(){e.controller.abort()})}var Fr=null,Ed=0,ql=0,Dl=null;function Xk(e,t){if(Fr===null){var n=Fr=[];Ed=0,ql=jp(),Dl={status:"pending",value:void 0,then:function(a){n.push(a)}}}return Ed++,t.then(Qg,Qg),t}function Qg(){if(--Ed===0&&Fr!==null){Dl!==null&&(Dl.status="fulfilled");var e=Fr;Fr=null,ql=0,Dl=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function $k(e,t){var n=[],a={status:"pending",value:null,reason:null,then:function(i){n.push(i)}};return e.then(function(){a.status="fulfilled",a.value=t;for(var i=0;i<n.length;i++)(0,n[i])(t)},function(i){for(a.status="rejected",a.reason=i,i=0;i<n.length;i++)(0,n[i])(void 0)}),a}var Zg=Z.S;Z.S=function(e,t){Iv=Ft(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&Xk(e,t),Zg!==null&&Zg(e,t)};var Ni=Yn(null);function gp(){var e=Ni.current;return e!==null?e:Ae.pooledCache}function Jo(e,t){t===null?Ne(Ni,Ni.current):Ne(Ni,t.pool)}function Hb(){var e=gp();return e===null?null:{parent:Ie._currentValue,pool:e}}var Jl=Error(w(460)),yp=Error(w(474)),Vu=Error(w(542)),mu={then:function(){}};function Fg(e){return e=e.status,e==="fulfilled"||e==="rejected"}function qb(e,t,n){switch(n=e[n],n===void 0?e.push(t):n!==t&&(t.then(ga,ga),t=n),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,Ig(e),e;default:if(typeof t.status=="string")t.then(ga,ga);else{if(e=Ae,e!==null&&100<e.shellSuspendCounter)throw Error(w(482));e=t,e.status="pending",e.then(function(a){if(t.status==="pending"){var i=t;i.status="fulfilled",i.value=a}},function(a){if(t.status==="pending"){var i=t;i.status="rejected",i.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,Ig(e),e}throw Ri=t,Jl}}function ki(e){try{var t=e._init;return t(e._payload)}catch(n){throw n!==null&&typeof n=="object"&&typeof n.then=="function"?(Ri=n,Jl):n}}var Ri=null;function Jg(){if(Ri===null)throw Error(w(459));var e=Ri;return Ri=null,e}function Ig(e){if(e===Jl||e===Vu)throw Error(w(483))}var Ml=null,fs=0;function Uo(e){var t=fs;return fs+=1,Ml===null&&(Ml=[]),qb(Ml,e,t)}function Ur(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function Bo(e,t){throw t.$$typeof===Dx?Error(w(525)):(e=Object.prototype.toString.call(t),Error(w(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function jb(e){function t(m,p){if(e){var b=m.deletions;b===null?(m.deletions=[p],m.flags|=16):b.push(p)}}function n(m,p){if(!e)return null;for(;p!==null;)t(m,p),p=p.sibling;return null}function a(m){for(var p=new Map;m!==null;)m.key!==null?p.set(m.key,m):p.set(m.index,m),m=m.sibling;return p}function i(m,p){return m=ba(m,p),m.index=0,m.sibling=null,m}function l(m,p,b){return m.index=b,e?(b=m.alternate,b!==null?(b=b.index,b<p?(m.flags|=67108866,p):b):(m.flags|=67108866,p)):(m.flags|=1048576,p)}function r(m){return e&&m.alternate===null&&(m.flags|=67108866),m}function s(m,p,b,S){return p===null||p.tag!==6?(p=Lf(b,m.mode,S),p.return=m,p):(p=i(p,b),p.return=m,p)}function o(m,p,b,S){var x=b.type;return x===yl?c(m,p,b.props.children,S,b.key):p!==null&&(p.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===La&&ki(x)===p.type)?(p=i(p,b.props),Ur(p,b),p.return=m,p):(p=Fo(b.type,b.key,b.props,null,m.mode,S),Ur(p,b),p.return=m,p)}function u(m,p,b,S){return p===null||p.tag!==4||p.stateNode.containerInfo!==b.containerInfo||p.stateNode.implementation!==b.implementation?(p=Uf(b,m.mode,S),p.return=m,p):(p=i(p,b.children||[]),p.return=m,p)}function c(m,p,b,S,x){return p===null||p.tag!==7?(p=wi(b,m.mode,S,x),p.return=m,p):(p=i(p,b),p.return=m,p)}function f(m,p,b){if(typeof p=="string"&&p!==""||typeof p=="number"||typeof p=="bigint")return p=Lf(""+p,m.mode,b),p.return=m,p;if(typeof p=="object"&&p!==null){switch(p.$$typeof){case No:return b=Fo(p.type,p.key,p.props,null,m.mode,b),Ur(b,p),b.return=m,b;case Vr:return p=Uf(p,m.mode,b),p.return=m,p;case La:return p=ki(p),f(m,p,b)}if(Yr(p)||zr(p))return p=wi(p,m.mode,b,null),p.return=m,p;if(typeof p.then=="function")return f(m,Uo(p),b);if(p.$$typeof===ma)return f(m,Lo(m,p),b);Bo(m,p)}return null}function d(m,p,b,S){var x=p!==null?p.key:null;if(typeof b=="string"&&b!==""||typeof b=="number"||typeof b=="bigint")return x!==null?null:s(m,p,""+b,S);if(typeof b=="object"&&b!==null){switch(b.$$typeof){case No:return b.key===x?o(m,p,b,S):null;case Vr:return b.key===x?u(m,p,b,S):null;case La:return b=ki(b),d(m,p,b,S)}if(Yr(b)||zr(b))return x!==null?null:c(m,p,b,S,null);if(typeof b.then=="function")return d(m,p,Uo(b),S);if(b.$$typeof===ma)return d(m,p,Lo(m,b),S);Bo(m,b)}return null}function h(m,p,b,S,x){if(typeof S=="string"&&S!==""||typeof S=="number"||typeof S=="bigint")return m=m.get(b)||null,s(p,m,""+S,x);if(typeof S=="object"&&S!==null){switch(S.$$typeof){case No:return m=m.get(S.key===null?b:S.key)||null,o(p,m,S,x);case Vr:return m=m.get(S.key===null?b:S.key)||null,u(p,m,S,x);case La:return S=ki(S),h(m,p,b,S,x)}if(Yr(S)||zr(S))return m=m.get(b)||null,c(p,m,S,x,null);if(typeof S.then=="function")return h(m,p,b,Uo(S),x);if(S.$$typeof===ma)return h(m,p,b,Lo(p,S),x);Bo(p,S)}return null}function v(m,p,b,S){for(var x=null,R=null,N=p,D=p=0,M=null;N!==null&&D<b.length;D++){N.index>D?(M=N,N=null):M=N.sibling;var U=d(m,N,b[D],S);if(U===null){N===null&&(N=M);break}e&&N&&U.alternate===null&&t(m,N),p=l(U,p,D),R===null?x=U:R.sibling=U,R=U,N=M}if(D===b.length)return n(m,N),re&&pa(m,D),x;if(N===null){for(;D<b.length;D++)N=f(m,b[D],S),N!==null&&(p=l(N,p,D),R===null?x=N:R.sibling=N,R=N);return re&&pa(m,D),x}for(N=a(N);D<b.length;D++)M=h(N,m,D,b[D],S),M!==null&&(e&&M.alternate!==null&&N.delete(M.key===null?D:M.key),p=l(M,p,D),R===null?x=M:R.sibling=M,R=M);return e&&N.forEach(function(ue){return t(m,ue)}),re&&pa(m,D),x}function g(m,p,b,S){if(b==null)throw Error(w(151));for(var x=null,R=null,N=p,D=p=0,M=null,U=b.next();N!==null&&!U.done;D++,U=b.next()){N.index>D?(M=N,N=null):M=N.sibling;var ue=d(m,N,U.value,S);if(ue===null){N===null&&(N=M);break}e&&N&&ue.alternate===null&&t(m,N),p=l(ue,p,D),R===null?x=ue:R.sibling=ue,R=ue,N=M}if(U.done)return n(m,N),re&&pa(m,D),x;if(N===null){for(;!U.done;D++,U=b.next())U=f(m,U.value,S),U!==null&&(p=l(U,p,D),R===null?x=U:R.sibling=U,R=U);return re&&pa(m,D),x}for(N=a(N);!U.done;D++,U=b.next())U=h(N,m,D,U.value,S),U!==null&&(e&&U.alternate!==null&&N.delete(U.key===null?D:U.key),p=l(U,p,D),R===null?x=U:R.sibling=U,R=U);return e&&N.forEach(function(K){return t(m,K)}),re&&pa(m,D),x}function k(m,p,b,S){if(typeof b=="object"&&b!==null&&b.type===yl&&b.key===null&&(b=b.props.children),typeof b=="object"&&b!==null){switch(b.$$typeof){case No:e:{for(var x=b.key;p!==null;){if(p.key===x){if(x=b.type,x===yl){if(p.tag===7){n(m,p.sibling),S=i(p,b.props.children),S.return=m,m=S;break e}}else if(p.elementType===x||typeof x=="object"&&x!==null&&x.$$typeof===La&&ki(x)===p.type){n(m,p.sibling),S=i(p,b.props),Ur(S,b),S.return=m,m=S;break e}n(m,p);break}else t(m,p);p=p.sibling}b.type===yl?(S=wi(b.props.children,m.mode,S,b.key),S.return=m,m=S):(S=Fo(b.type,b.key,b.props,null,m.mode,S),Ur(S,b),S.return=m,m=S)}return r(m);case Vr:e:{for(x=b.key;p!==null;){if(p.key===x)if(p.tag===4&&p.stateNode.containerInfo===b.containerInfo&&p.stateNode.implementation===b.implementation){n(m,p.sibling),S=i(p,b.children||[]),S.return=m,m=S;break e}else{n(m,p);break}else t(m,p);p=p.sibling}S=Uf(b,m.mode,S),S.return=m,m=S}return r(m);case La:return b=ki(b),k(m,p,b,S)}if(Yr(b))return v(m,p,b,S);if(zr(b)){if(x=zr(b),typeof x!="function")throw Error(w(150));return b=x.call(b),g(m,p,b,S)}if(typeof b.then=="function")return k(m,p,Uo(b),S);if(b.$$typeof===ma)return k(m,p,Lo(m,b),S);Bo(m,b)}return typeof b=="string"&&b!==""||typeof b=="number"||typeof b=="bigint"?(b=""+b,p!==null&&p.tag===6?(n(m,p.sibling),S=i(p,b),S.return=m,m=S):(n(m,p),S=Lf(b,m.mode,S),S.return=m,m=S),r(m)):n(m,p)}return function(m,p,b,S){try{fs=0;var x=k(m,p,b,S);return Ml=null,x}catch(N){if(N===Jl||N===Vu)throw N;var R=Qt(29,N,null,m.mode);return R.lanes=S,R.return=m,R}}}var Di=jb(!0),Vb=jb(!1),Ua=!1;function bp(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ad(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Za(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Fa(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(ce&2)!==0){var i=a.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),a.pending=t,t=du(e),Db(e,null,n),t}return ju(e,a,t,n),du(e)}function Jr(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,lb(e,n)}}function Hf(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var i=null,l=null;if(n=n.firstBaseUpdate,n!==null){do{var r={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};l===null?i=l=r:l=l.next=r,n=n.next}while(n!==null);l===null?i=l=t:l=l.next=t}else i=l=t;n={baseState:a.baseState,firstBaseUpdate:i,lastBaseUpdate:l,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var wd=!1;function Ir(){if(wd){var e=Dl;if(e!==null)throw e}}function Pr(e,t,n,a){wd=!1;var i=e.updateQueue;Ua=!1;var l=i.firstBaseUpdate,r=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var o=s,u=o.next;o.next=null,r===null?l=u:r.next=u,r=o;var c=e.alternate;c!==null&&(c=c.updateQueue,s=c.lastBaseUpdate,s!==r&&(s===null?c.firstBaseUpdate=u:s.next=u,c.lastBaseUpdate=o))}if(l!==null){var f=i.baseState;r=0,c=u=o=null,s=l;do{var d=s.lane&-536870913,h=d!==s.lane;if(h?(le&d)===d:(a&d)===d){d!==0&&d===ql&&(wd=!0),c!==null&&(c=c.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var v=e,g=s;d=t;var k=n;switch(g.tag){case 1:if(v=g.payload,typeof v=="function"){f=v.call(k,f,d);break e}f=v;break e;case 3:v.flags=v.flags&-65537|128;case 0:if(v=g.payload,d=typeof v=="function"?v.call(k,f,d):v,d==null)break e;f=ze({},f,d);break e;case 2:Ua=!0}}d=s.callback,d!==null&&(e.flags|=64,h&&(e.flags|=8192),h=i.callbacks,h===null?i.callbacks=[d]:h.push(d))}else h={lane:d,tag:s.tag,payload:s.payload,callback:s.callback,next:null},c===null?(u=c=h,o=f):c=c.next=h,r|=d;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;h=s,s=h.next,h.next=null,i.lastBaseUpdate=h,i.shared.pending=null}}while(!0);c===null&&(o=f),i.baseState=o,i.firstBaseUpdate=u,i.lastBaseUpdate=c,l===null&&(i.shared.lanes=0),ii|=r,e.lanes=r,e.memoizedState=f}}function Yb(e,t){if(typeof e!="function")throw Error(w(191,e));e.call(t)}function Gb(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)Yb(n[e],t)}var jl=Yn(null),gu=Yn(0);function Pg(e,t){e=Aa,Ne(gu,e),Ne(jl,t),Aa=e|t.baseLanes}function Nd(){Ne(gu,Aa),Ne(jl,jl.current)}function vp(){Aa=gu.current,ut(jl),ut(gu)}var en=Yn(null),hn=null;function Ha(e){var t=e.alternate;Ne($e,$e.current&1),Ne(en,e),hn===null&&(t===null||jl.current!==null||t.memoizedState!==null)&&(hn=e)}function Rd(e){Ne($e,$e.current),Ne(en,e),hn===null&&(hn=e)}function Kb(e){e.tag===22?(Ne($e,$e.current),Ne(en,e),hn===null&&(hn=e)):qa(e)}function qa(){Ne($e,$e.current),Ne(en,en.current)}function $t(e){ut(en),hn===e&&(hn=null),ut($e)}var $e=Yn(0);function yu(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||Qd(n)||Zd(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var xa=0,W=null,ke=null,Fe=null,bu=!1,zl=!1,Mi=!1,vu=0,ds=0,Ll=null,Qk=0;function je(){throw Error(w(321))}function Sp(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!Wt(e[n],t[n]))return!1;return!0}function Tp(e,t,n,a,i,l){return xa=l,W=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Z.H=e===null||e.memoizedState===null?Tv:Dp,Mi=!1,l=n(a,i),Mi=!1,zl&&(l=$b(t,n,a,i)),Xb(e),l}function Xb(e){Z.H=ps;var t=ke!==null&&ke.next!==null;if(xa=0,Fe=ke=W=null,bu=!1,ds=0,Ll=null,t)throw Error(w(300));e===null||Pe||(e=e.dependencies,e!==null&&hu(e)&&(Pe=!0))}function $b(e,t,n,a){W=e;var i=0;do{if(zl&&(Ll=null),ds=0,zl=!1,25<=i)throw Error(w(301));if(i+=1,Fe=ke=null,e.updateQueue!=null){var l=e.updateQueue;l.lastEffect=null,l.events=null,l.stores=null,l.memoCache!=null&&(l.memoCache.index=0)}Z.H=xv,l=t(n,a)}while(zl);return l}function Zk(){var e=Z.H,t=e.useState()[0];return t=typeof t.then=="function"?ws(t):t,e=e.useState()[0],(ke!==null?ke.memoizedState:null)!==e&&(W.flags|=1024),t}function xp(){var e=vu!==0;return vu=0,e}function kp(e,t,n){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~n}function Ep(e){if(bu){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}bu=!1}xa=0,Fe=ke=W=null,zl=!1,ds=vu=0,Ll=null}function Rt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Fe===null?W.memoizedState=Fe=e:Fe=Fe.next=e,Fe}function Qe(){if(ke===null){var e=W.alternate;e=e!==null?e.memoizedState:null}else e=ke.next;var t=Fe===null?W.memoizedState:Fe.next;if(t!==null)Fe=t,ke=e;else{if(e===null)throw W.alternate===null?Error(w(467)):Error(w(310));ke=e,e={memoizedState:ke.memoizedState,baseState:ke.baseState,baseQueue:ke.baseQueue,queue:ke.queue,next:null},Fe===null?W.memoizedState=Fe=e:Fe=Fe.next=e}return Fe}function Yu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function ws(e){var t=ds;return ds+=1,Ll===null&&(Ll=[]),e=qb(Ll,e,t),t=W,(Fe===null?t.memoizedState:Fe.next)===null&&(t=t.alternate,Z.H=t===null||t.memoizedState===null?Tv:Dp),e}function Gu(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return ws(e);if(e.$$typeof===ma)return mt(e)}throw Error(w(438,String(e)))}function Ap(e){var t=null,n=W.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var a=W.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(i){return i.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),n===null&&(n=Yu(),W.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0)for(n=t.data[t.index]=Array(e),a=0;a<e;a++)n[a]=Mx;return t.index++,n}function ka(e,t){return typeof t=="function"?t(e):t}function Io(e){var t=Qe();return wp(t,ke,e)}function wp(e,t,n){var a=e.queue;if(a===null)throw Error(w(311));a.lastRenderedReducer=n;var i=e.baseQueue,l=a.pending;if(l!==null){if(i!==null){var r=i.next;i.next=l.next,l.next=r}t.baseQueue=i=l,a.pending=null}if(l=e.baseState,i===null)e.memoizedState=l;else{t=i.next;var s=r=null,o=null,u=t,c=!1;do{var f=u.lane&-536870913;if(f!==u.lane?(le&f)===f:(xa&f)===f){var d=u.revertLane;if(d===0)o!==null&&(o=o.next={lane:0,revertLane:0,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),f===ql&&(c=!0);else if((xa&d)===d){u=u.next,d===ql&&(c=!0);continue}else f={lane:0,revertLane:u.revertLane,gesture:null,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},o===null?(s=o=f,r=l):o=o.next=f,W.lanes|=d,ii|=d;f=u.action,Mi&&n(l,f),l=u.hasEagerState?u.eagerState:n(l,f)}else d={lane:f,revertLane:u.revertLane,gesture:u.gesture,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null},o===null?(s=o=d,r=l):o=o.next=d,W.lanes|=f,ii|=f;u=u.next}while(u!==null&&u!==t);if(o===null?r=l:o.next=s,!Wt(l,e.memoizedState)&&(Pe=!0,c&&(n=Dl,n!==null)))throw n;e.memoizedState=l,e.baseState=r,e.baseQueue=o,a.lastRenderedState=l}return i===null&&(a.lanes=0),[e.memoizedState,a.dispatch]}function qf(e){var t=Qe(),n=t.queue;if(n===null)throw Error(w(311));n.lastRenderedReducer=e;var a=n.dispatch,i=n.pending,l=t.memoizedState;if(i!==null){n.pending=null;var r=i=i.next;do l=e(l,r.action),r=r.next;while(r!==i);Wt(l,t.memoizedState)||(Pe=!0),t.memoizedState=l,t.baseQueue===null&&(t.baseState=l),n.lastRenderedState=l}return[l,a]}function Qb(e,t,n){var a=W,i=Qe(),l=re;if(l){if(n===void 0)throw Error(w(407));n=n()}else n=t();var r=!Wt((ke||i).memoizedState,n);if(r&&(i.memoizedState=n,Pe=!0),i=i.queue,Np(Jb.bind(null,a,i,e),[e]),i.getSnapshot!==t||r||Fe!==null&&Fe.memoizedState.tag&1){if(a.flags|=2048,Vl(9,{destroy:void 0},Fb.bind(null,a,i,n,t),null),Ae===null)throw Error(w(349));l||(xa&127)!==0||Zb(a,t,n)}return n}function Zb(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=W.updateQueue,t===null?(t=Yu(),W.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Fb(e,t,n,a){t.value=n,t.getSnapshot=a,Ib(t)&&Pb(e)}function Jb(e,t,n){return n(function(){Ib(t)&&Pb(e)})}function Ib(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Wt(e,n)}catch(a){return!0}}function Pb(e){var t=Hi(e,2);t!==null&&Bt(t,e,2)}function Od(e){var t=Rt();if(typeof e=="function"){var n=e;if(e=n(),Mi){Va(!0);try{n()}finally{Va(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ka,lastRenderedState:e},t}function Wb(e,t,n,a){return e.baseState=n,wp(e,ke,typeof a=="function"?a:ka)}function Fk(e,t,n,a,i){if(Xu(e))throw Error(w(485));if(e=t.action,e!==null){var l={payload:i,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(r){l.listeners.push(r)}};Z.T!==null?n(!0):l.isTransition=!1,a(l),n=t.pending,n===null?(l.next=t.pending=l,ev(t,l)):(l.next=n.next,t.pending=n.next=l)}}function ev(e,t){var n=t.action,a=t.payload,i=e.state;if(t.isTransition){var l=Z.T,r={};Z.T=r;try{var s=n(i,a),o=Z.S;o!==null&&o(r,s),Wg(e,t,s)}catch(u){Cd(e,t,u)}finally{l!==null&&r.types!==null&&(l.types=r.types),Z.T=l}}else try{l=n(i,a),Wg(e,t,l)}catch(u){Cd(e,t,u)}}function Wg(e,t,n){n!==null&&typeof n=="object"&&typeof n.then=="function"?n.then(function(a){ey(e,t,a)},function(a){return Cd(e,t,a)}):ey(e,t,n)}function ey(e,t,n){t.status="fulfilled",t.value=n,tv(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,ev(e,n)))}function Cd(e,t,n){var a=e.pending;if(e.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=n,tv(t),t=t.next;while(t!==a)}e.action=null}function tv(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function nv(e,t){return t}function ty(e,t){if(re){var n=Ae.formState;if(n!==null){e:{var a=W;if(re){if(Me){t:{for(var i=Me,l=pn;i.nodeType!==8;){if(!l){i=null;break t}if(i=mn(i.nextSibling),i===null){i=null;break t}}l=i.data,i=l==="F!"||l==="F"?i:null}if(i){Me=mn(i.nextSibling),a=i.data==="F!";break e}}ni(a)}a=!1}a&&(t=n[0])}}return n=Rt(),n.memoizedState=n.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:nv,lastRenderedState:t},n.queue=a,n=bv.bind(null,W,a),a.dispatch=n,a=Od(!1),l=_p.bind(null,W,!1,a.queue),a=Rt(),i={state:t,dispatch:null,action:e,pending:null},a.queue=i,n=Fk.bind(null,W,i,l,n),i.dispatch=n,a.memoizedState=e,[t,n,!1]}function ny(e){var t=Qe();return av(t,ke,e)}function av(e,t,n){if(t=wp(e,t,nv)[0],e=Io(ka)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var a=ws(t)}catch(r){throw r===Jl?Vu:r}else a=t;t=Qe();var i=t.queue,l=i.dispatch;return n!==t.memoizedState&&(W.flags|=2048,Vl(9,{destroy:void 0},Jk.bind(null,i,n),null)),[a,l,e]}function Jk(e,t){e.action=t}function ay(e){var t=Qe(),n=ke;if(n!==null)return av(t,n,e);Qe(),t=t.memoizedState,n=Qe();var a=n.queue.dispatch;return n.memoizedState=e,[t,a,!1]}function Vl(e,t,n,a){return e={tag:e,create:n,deps:a,inst:t,next:null},t=W.updateQueue,t===null&&(t=Yu(),W.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function iv(){return Qe().memoizedState}function Po(e,t,n,a){var i=Rt();W.flags|=e,i.memoizedState=Vl(1|t,{destroy:void 0},n,a===void 0?null:a)}function Ku(e,t,n,a){var i=Qe();a=a===void 0?null:a;var l=i.memoizedState.inst;ke!==null&&a!==null&&Sp(a,ke.memoizedState.deps)?i.memoizedState=Vl(t,l,n,a):(W.flags|=e,i.memoizedState=Vl(1|t,l,n,a))}function iy(e,t){Po(8390656,8,e,t)}function Np(e,t){Ku(2048,8,e,t)}function Ik(e){W.flags|=4;var t=W.updateQueue;if(t===null)t=Yu(),W.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function lv(e){var t=Qe().memoizedState;return Ik({ref:t,nextImpl:e}),function(){if((ce&2)!==0)throw Error(w(440));return t.impl.apply(void 0,arguments)}}function rv(e,t){return Ku(4,2,e,t)}function sv(e,t){return Ku(4,4,e,t)}function ov(e,t){if(typeof t=="function"){e=e();var n=t(e);return function(){typeof n=="function"?n():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function uv(e,t,n){n=n!=null?n.concat([e]):null,Ku(4,4,ov.bind(null,t,e),n)}function Rp(){}function cv(e,t){var n=Qe();t=t===void 0?null:t;var a=n.memoizedState;return t!==null&&Sp(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function fv(e,t){var n=Qe();t=t===void 0?null:t;var a=n.memoizedState;if(t!==null&&Sp(t,a[1]))return a[0];if(a=e(),Mi){Va(!0);try{e()}finally{Va(!1)}}return n.memoizedState=[a,t],a}function Op(e,t,n){return n===void 0||(xa&1073741824)!==0&&(le&261930)===0?e.memoizedState=t:(e.memoizedState=n,e=Wv(),W.lanes|=e,ii|=e,n)}function dv(e,t,n,a){return Wt(n,t)?n:jl.current!==null?(e=Op(e,n,a),Wt(e,t)||(Pe=!0),e):(xa&42)===0||(xa&1073741824)!==0&&(le&261930)===0?(Pe=!0,e.memoizedState=n):(e=Wv(),W.lanes|=e,ii|=e,t)}function pv(e,t,n,a,i){var l=fe.p;fe.p=l!==0&&8>l?l:8;var r=Z.T,s={};Z.T=s,_p(e,!1,t,n);try{var o=i(),u=Z.S;if(u!==null&&u(s,o),o!==null&&typeof o=="object"&&typeof o.then=="function"){var c=$k(o,a);Wr(e,t,c,Pt(e))}else Wr(e,t,a,Pt(e))}catch(f){Wr(e,t,{then:function(){},status:"rejected",reason:f},Pt())}finally{fe.p=l,r!==null&&s.types!==null&&(r.types=s.types),Z.T=r}}function Pk(){}function _d(e,t,n,a){if(e.tag!==5)throw Error(w(476));var i=hv(e).queue;pv(e,i,t,Ai,n===null?Pk:function(){return mv(e),n(a)})}function hv(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Ai,baseState:Ai,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ka,lastRenderedState:Ai},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ka,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function mv(e){var t=hv(e);t.next===null&&(t=e.alternate.memoizedState),Wr(e,t.next.queue,{},Pt())}function Cp(){return mt(gs)}function gv(){return Qe().memoizedState}function yv(){return Qe().memoizedState}function Wk(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Pt();e=Za(n);var a=Fa(t,e,n);a!==null&&(Bt(a,t,n),Jr(a,t,n)),t={cache:mp()},e.payload=t;return}t=t.return}}function eE(e,t,n){var a=Pt();n={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Xu(e)?vv(t,n):(n=fp(e,t,n,a),n!==null&&(Bt(n,e,a),Sv(n,t,a)))}function bv(e,t,n){var a=Pt();Wr(e,t,n,a)}function Wr(e,t,n,a){var i={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Xu(e))vv(t,i);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null))try{var r=t.lastRenderedState,s=l(r,n);if(i.hasEagerState=!0,i.eagerState=s,Wt(s,r))return ju(e,t,i,0),Ae===null&&qu(),!1}catch(o){}if(n=fp(e,t,i,a),n!==null)return Bt(n,e,a),Sv(n,t,a),!0}return!1}function _p(e,t,n,a){if(a={lane:2,revertLane:jp(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Xu(e)){if(t)throw Error(w(479))}else t=fp(e,n,a,2),t!==null&&Bt(t,e,2)}function Xu(e){var t=e.alternate;return e===W||t!==null&&t===W}function vv(e,t){zl=bu=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Sv(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,lb(e,n)}}var ps={readContext:mt,use:Gu,useCallback:je,useContext:je,useEffect:je,useImperativeHandle:je,useLayoutEffect:je,useInsertionEffect:je,useMemo:je,useReducer:je,useRef:je,useState:je,useDebugValue:je,useDeferredValue:je,useTransition:je,useSyncExternalStore:je,useId:je,useHostTransitionStatus:je,useFormState:je,useActionState:je,useOptimistic:je,useMemoCache:je,useCacheRefresh:je};ps.useEffectEvent=je;var Tv={readContext:mt,use:Gu,useCallback:function(e,t){return Rt().memoizedState=[e,t===void 0?null:t],e},useContext:mt,useEffect:iy,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,Po(4194308,4,ov.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Po(4194308,4,e,t)},useInsertionEffect:function(e,t){Po(4,2,e,t)},useMemo:function(e,t){var n=Rt();t=t===void 0?null:t;var a=e();if(Mi){Va(!0);try{e()}finally{Va(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=Rt();if(n!==void 0){var i=n(t);if(Mi){Va(!0);try{n(t)}finally{Va(!1)}}}else i=t;return a.memoizedState=a.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},a.queue=e,e=e.dispatch=eE.bind(null,W,e),[a.memoizedState,e]},useRef:function(e){var t=Rt();return e={current:e},t.memoizedState=e},useState:function(e){e=Od(e);var t=e.queue,n=bv.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Rp,useDeferredValue:function(e,t){var n=Rt();return Op(n,e,t)},useTransition:function(){var e=Od(!1);return e=pv.bind(null,W,e.queue,!0,!1),Rt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=W,i=Rt();if(re){if(n===void 0)throw Error(w(407));n=n()}else{if(n=t(),Ae===null)throw Error(w(349));(le&127)!==0||Zb(a,t,n)}i.memoizedState=n;var l={value:n,getSnapshot:t};return i.queue=l,iy(Jb.bind(null,a,l,e),[e]),a.flags|=2048,Vl(9,{destroy:void 0},Fb.bind(null,a,l,n,t),null),n},useId:function(){var e=Rt(),t=Ae.identifierPrefix;if(re){var n=qn,a=Hn;n=(a&~(1<<32-It(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=vu++,0<n&&(t+="H"+n.toString(32)),t+="_"}else n=Qk++,t="_"+t+"r_"+n.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:Cp,useFormState:ty,useActionState:ty,useOptimistic:function(e){var t=Rt();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=_p.bind(null,W,!0,n),n.dispatch=t,[e,t]},useMemoCache:Ap,useCacheRefresh:function(){return Rt().memoizedState=Wk.bind(null,W)},useEffectEvent:function(e){var t=Rt(),n={impl:e};return t.memoizedState=n,function(){if((ce&2)!==0)throw Error(w(440));return n.impl.apply(void 0,arguments)}}},Dp={readContext:mt,use:Gu,useCallback:cv,useContext:mt,useEffect:Np,useImperativeHandle:uv,useInsertionEffect:rv,useLayoutEffect:sv,useMemo:fv,useReducer:Io,useRef:iv,useState:function(){return Io(ka)},useDebugValue:Rp,useDeferredValue:function(e,t){var n=Qe();return dv(n,ke.memoizedState,e,t)},useTransition:function(){var e=Io(ka)[0],t=Qe().memoizedState;return[typeof e=="boolean"?e:ws(e),t]},useSyncExternalStore:Qb,useId:gv,useHostTransitionStatus:Cp,useFormState:ny,useActionState:ny,useOptimistic:function(e,t){var n=Qe();return Wb(n,ke,e,t)},useMemoCache:Ap,useCacheRefresh:yv};Dp.useEffectEvent=lv;var xv={readContext:mt,use:Gu,useCallback:cv,useContext:mt,useEffect:Np,useImperativeHandle:uv,useInsertionEffect:rv,useLayoutEffect:sv,useMemo:fv,useReducer:qf,useRef:iv,useState:function(){return qf(ka)},useDebugValue:Rp,useDeferredValue:function(e,t){var n=Qe();return ke===null?Op(n,e,t):dv(n,ke.memoizedState,e,t)},useTransition:function(){var e=qf(ka)[0],t=Qe().memoizedState;return[typeof e=="boolean"?e:ws(e),t]},useSyncExternalStore:Qb,useId:gv,useHostTransitionStatus:Cp,useFormState:ay,useActionState:ay,useOptimistic:function(e,t){var n=Qe();return ke!==null?Wb(n,ke,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:Ap,useCacheRefresh:yv};xv.useEffectEvent=lv;function jf(e,t,n,a){t=e.memoizedState,n=n(a,t),n=n==null?t:ze({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var Dd={enqueueSetState:function(e,t,n){e=e._reactInternals;var a=Pt(),i=Za(a);i.payload=t,n!=null&&(i.callback=n),t=Fa(e,i,a),t!==null&&(Bt(t,e,a),Jr(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=Pt(),i=Za(a);i.tag=1,i.payload=t,n!=null&&(i.callback=n),t=Fa(e,i,a),t!==null&&(Bt(t,e,a),Jr(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Pt(),a=Za(n);a.tag=2,t!=null&&(a.callback=t),t=Fa(e,a,n),t!==null&&(Bt(t,e,n),Jr(t,e,n))}};function ly(e,t,n,a,i,l,r){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(a,l,r):t.prototype&&t.prototype.isPureReactComponent?!os(n,a)||!os(i,l):!0}function ry(e,t,n,a){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==e&&Dd.enqueueReplaceState(t,t.state,null)}function zi(e,t){var n=t;if("ref"in t){n={};for(var a in t)a!=="ref"&&(n[a]=t[a])}if(e=e.defaultProps){n===t&&(n=ze({},n));for(var i in e)n[i]===void 0&&(n[i]=e[i])}return n}function kv(e){fu(e)}function Ev(e){console.error(e)}function Av(e){fu(e)}function Su(e,t){try{var n=e.onUncaughtError;n(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function sy(e,t,n){try{var a=e.onCaughtError;a(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(i){setTimeout(function(){throw i})}}function Md(e,t,n){return n=Za(n),n.tag=3,n.payload={element:null},n.callback=function(){Su(e,t)},n}function wv(e){return e=Za(e),e.tag=3,e}function Nv(e,t,n,a){var i=n.type.getDerivedStateFromError;if(typeof i=="function"){var l=a.value;e.payload=function(){return i(l)},e.callback=function(){sy(t,n,a)}}var r=n.stateNode;r!==null&&typeof r.componentDidCatch=="function"&&(e.callback=function(){sy(t,n,a),typeof i!="function"&&(Ja===null?Ja=new Set([this]):Ja.add(this));var s=a.stack;this.componentDidCatch(a.value,{componentStack:s!==null?s:""})})}function tE(e,t,n,a,i){if(n.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=n.alternate,t!==null&&Fl(t,n,i,!0),n=en.current,n!==null){switch(n.tag){case 31:case 13:return hn===null?Au():n.alternate===null&&Ve===0&&(Ve=3),n.flags&=-257,n.flags|=65536,n.lanes=i,a===mu?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([a]):t.add(a),If(e,a,i)),!1;case 22:return n.flags|=65536,a===mu?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([a]):n.add(a)),If(e,a,i)),!1}throw Error(w(435,n.tag))}return If(e,a,i),Au(),!1}if(re)return t=en.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=i,a!==Sd&&(e=Error(w(422),{cause:a}),cs(dn(e,n)))):(a!==Sd&&(t=Error(w(423),{cause:a}),cs(dn(t,n))),e=e.current.alternate,e.flags|=65536,i&=-i,e.lanes|=i,a=dn(a,n),i=Md(e.stateNode,a,i),Hf(e,i),Ve!==4&&(Ve=2)),!1;var l=Error(w(520),{cause:a});if(l=dn(l,n),ns===null?ns=[l]:ns.push(l),Ve!==4&&(Ve=2),t===null)return!0;a=dn(a,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=i&-i,n.lanes|=e,e=Md(n.stateNode,a,e),Hf(n,e),!1;case 1:if(t=n.type,l=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||l!==null&&typeof l.componentDidCatch=="function"&&(Ja===null||!Ja.has(l))))return n.flags|=65536,i&=-i,n.lanes|=i,i=wv(i),Nv(i,e,n,a),Hf(n,i),!1}n=n.return}while(n!==null);return!1}var Mp=Error(w(461)),Pe=!1;function dt(e,t,n,a){t.child=e===null?Vb(t,null,n,a):Di(t,e.child,n,a)}function oy(e,t,n,a,i){n=n.render;var l=t.ref;if("ref"in a){var r={};for(var s in a)s!=="ref"&&(r[s]=a[s])}else r=a;return _i(t),a=Tp(e,t,n,r,l,i),s=xp(),e!==null&&!Pe?(kp(e,t,i),Ea(e,t,i)):(re&&s&&pp(t),t.flags|=1,dt(e,t,a,i),t.child)}function uy(e,t,n,a,i){if(e===null){var l=n.type;return typeof l=="function"&&!dp(l)&&l.defaultProps===void 0&&n.compare===null?(t.tag=15,t.type=l,Rv(e,t,l,a,i)):(e=Fo(n.type,null,a,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(l=e.child,!zp(e,i)){var r=l.memoizedProps;if(n=n.compare,n=n!==null?n:os,n(r,a)&&e.ref===t.ref)return Ea(e,t,i)}return t.flags|=1,e=ba(l,a),e.ref=t.ref,e.return=t,t.child=e}function Rv(e,t,n,a,i){if(e!==null){var l=e.memoizedProps;if(os(l,a)&&e.ref===t.ref)if(Pe=!1,t.pendingProps=a=l,zp(e,i))(e.flags&131072)!==0&&(Pe=!0);else return t.lanes=e.lanes,Ea(e,t,i)}return zd(e,t,n,a,i)}function Ov(e,t,n,a){var i=a.children,l=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.mode==="hidden"){if((t.flags&128)!==0){if(l=l!==null?l.baseLanes|n:n,e!==null){for(a=t.child=e.child,i=0;a!==null;)i=i|a.lanes|a.childLanes,a=a.sibling;a=i&~l}else a=0,t.child=null;return cy(e,t,l,n,a)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Jo(t,l!==null?l.cachePool:null),l!==null?Pg(t,l):Nd(),Kb(t);else return a=t.lanes=536870912,cy(e,t,l!==null?l.baseLanes|n:n,n,a)}else l!==null?(Jo(t,l.cachePool),Pg(t,l),qa(t),t.memoizedState=null):(e!==null&&Jo(t,null),Nd(),qa(t));return dt(e,t,i,n),t.child}function Kr(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function cy(e,t,n,a,i){var l=gp();return l=l===null?null:{parent:Ie._currentValue,pool:l},t.memoizedState={baseLanes:n,cachePool:l},e!==null&&Jo(t,null),Nd(),Kb(t),e!==null&&Fl(e,t,a,!0),t.childLanes=i,null}function Wo(e,t){return t=Tu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function fy(e,t,n){return Di(t,e.child,null,n),e=Wo(t,t.pendingProps),e.flags|=2,$t(t),t.memoizedState=null,e}function nE(e,t,n){var a=t.pendingProps,i=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(re){if(a.mode==="hidden")return e=Wo(t,a),t.lanes=536870912,Kr(null,e);if(Rd(t),(e=Me)?(e=T0(e,pn),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:ti!==null?{id:Hn,overflow:qn}:null,retryLane:536870912,hydrationErrors:null},n=zb(e),n.return=t,t.child=n,ht=t,Me=null)):e=null,e===null)throw ni(t);return t.lanes=536870912,null}return Wo(t,a)}var l=e.memoizedState;if(l!==null){var r=l.dehydrated;if(Rd(t),i)if(t.flags&256)t.flags&=-257,t=fy(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(w(558));else if(Pe||Fl(e,t,n,!1),i=(n&e.childLanes)!==0,Pe||i){if(a=Ae,a!==null&&(r=rb(a,n),r!==0&&r!==l.retryLane))throw l.retryLane=r,Hi(e,r),Bt(a,e,r),Mp;Au(),t=fy(e,t,n)}else e=l.treeContext,Me=mn(r.nextSibling),ht=t,re=!0,Qa=null,pn=!1,e!==null&&Ub(t,e),t=Wo(t,a),t.flags|=4096;return t}return e=ba(e.child,{mode:a.mode,children:a.children}),e.ref=t.ref,t.child=e,e.return=t,e}function eu(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error(w(284));(e===null||e.ref!==n)&&(t.flags|=4194816)}}function zd(e,t,n,a,i){return _i(t),n=Tp(e,t,n,a,void 0,i),a=xp(),e!==null&&!Pe?(kp(e,t,i),Ea(e,t,i)):(re&&a&&pp(t),t.flags|=1,dt(e,t,n,i),t.child)}function dy(e,t,n,a,i,l){return _i(t),t.updateQueue=null,n=$b(t,a,n,i),Xb(e),a=xp(),e!==null&&!Pe?(kp(e,t,l),Ea(e,t,l)):(re&&a&&pp(t),t.flags|=1,dt(e,t,n,l),t.child)}function py(e,t,n,a,i){if(_i(t),t.stateNode===null){var l=Al,r=n.contextType;typeof r=="object"&&r!==null&&(l=mt(r)),l=new n(a,l),t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,l.updater=Dd,t.stateNode=l,l._reactInternals=t,l=t.stateNode,l.props=a,l.state=t.memoizedState,l.refs={},bp(t),r=n.contextType,l.context=typeof r=="object"&&r!==null?mt(r):Al,l.state=t.memoizedState,r=n.getDerivedStateFromProps,typeof r=="function"&&(jf(t,n,r,a),l.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof l.getSnapshotBeforeUpdate=="function"||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(r=l.state,typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount(),r!==l.state&&Dd.enqueueReplaceState(l,l.state,null),Pr(t,a,l,i),Ir(),l.state=t.memoizedState),typeof l.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(e===null){l=t.stateNode;var s=t.memoizedProps,o=zi(n,s);l.props=o;var u=l.context,c=n.contextType;r=Al,typeof c=="object"&&c!==null&&(r=mt(c));var f=n.getDerivedStateFromProps;c=typeof f=="function"||typeof l.getSnapshotBeforeUpdate=="function",s=t.pendingProps!==s,c||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(s||u!==r)&&ry(t,l,a,r),Ua=!1;var d=t.memoizedState;l.state=d,Pr(t,a,l,i),Ir(),u=t.memoizedState,s||d!==u||Ua?(typeof f=="function"&&(jf(t,n,f,a),u=t.memoizedState),(o=Ua||ly(t,n,o,a,d,u,r))?(c||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount()),typeof l.componentDidMount=="function"&&(t.flags|=4194308)):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=u),l.props=a,l.state=u,l.context=r,a=o):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{l=t.stateNode,Ad(e,t),r=t.memoizedProps,c=zi(n,r),l.props=c,f=t.pendingProps,d=l.context,u=n.contextType,o=Al,typeof u=="object"&&u!==null&&(o=mt(u)),s=n.getDerivedStateFromProps,(u=typeof s=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(r!==f||d!==o)&&ry(t,l,a,o),Ua=!1,d=t.memoizedState,l.state=d,Pr(t,a,l,i),Ir();var h=t.memoizedState;r!==f||d!==h||Ua||e!==null&&e.dependencies!==null&&hu(e.dependencies)?(typeof s=="function"&&(jf(t,n,s,a),h=t.memoizedState),(c=Ua||ly(t,n,c,a,d,h,o)||e!==null&&e.dependencies!==null&&hu(e.dependencies))?(u||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(a,h,o),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(a,h,o)),typeof l.componentDidUpdate=="function"&&(t.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof l.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=h),l.props=a,l.state=h,l.context=o,a=c):(typeof l.componentDidUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||r===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),a=!1)}return l=a,eu(e,t),a=(t.flags&128)!==0,l||a?(l=t.stateNode,n=a&&typeof n.getDerivedStateFromError!="function"?null:l.render(),t.flags|=1,e!==null&&a?(t.child=Di(t,e.child,null,i),t.child=Di(t,null,n,i)):dt(e,t,n,i),t.memoizedState=l.state,e=t.child):e=Ea(e,t,i),e}function hy(e,t,n,a){return Ci(),t.flags|=256,dt(e,t,n,a),t.child}var Vf={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Yf(e){return{baseLanes:e,cachePool:Hb()}}function Gf(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=Zt),e}function Cv(e,t,n){var a=t.pendingProps,i=!1,l=(t.flags&128)!==0,r;if((r=l)||(r=e!==null&&e.memoizedState===null?!1:($e.current&2)!==0),r&&(i=!0,t.flags&=-129),r=(t.flags&32)!==0,t.flags&=-33,e===null){if(re){if(i?Ha(t):qa(t),(e=Me)?(e=T0(e,pn),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:ti!==null?{id:Hn,overflow:qn}:null,retryLane:536870912,hydrationErrors:null},n=zb(e),n.return=t,t.child=n,ht=t,Me=null)):e=null,e===null)throw ni(t);return Zd(e)?t.lanes=32:t.lanes=536870912,null}var s=a.children;return a=a.fallback,i?(qa(t),i=t.mode,s=Tu({mode:"hidden",children:s},i),a=wi(a,i,n,null),s.return=t,a.return=t,s.sibling=a,t.child=s,a=t.child,a.memoizedState=Yf(n),a.childLanes=Gf(e,r,n),t.memoizedState=Vf,Kr(null,a)):(Ha(t),Ld(t,s))}var o=e.memoizedState;if(o!==null&&(s=o.dehydrated,s!==null)){if(l)t.flags&256?(Ha(t),t.flags&=-257,t=Kf(e,t,n)):t.memoizedState!==null?(qa(t),t.child=e.child,t.flags|=128,t=null):(qa(t),s=a.fallback,i=t.mode,a=Tu({mode:"visible",children:a.children},i),s=wi(s,i,n,null),s.flags|=2,a.return=t,s.return=t,a.sibling=s,t.child=a,Di(t,e.child,null,n),a=t.child,a.memoizedState=Yf(n),a.childLanes=Gf(e,r,n),t.memoizedState=Vf,t=Kr(null,a));else if(Ha(t),Zd(s)){if(r=s.nextSibling&&s.nextSibling.dataset,r)var u=r.dgst;r=u,a=Error(w(419)),a.stack="",a.digest=r,cs({value:a,source:null,stack:null}),t=Kf(e,t,n)}else if(Pe||Fl(e,t,n,!1),r=(n&e.childLanes)!==0,Pe||r){if(r=Ae,r!==null&&(a=rb(r,n),a!==0&&a!==o.retryLane))throw o.retryLane=a,Hi(e,a),Bt(r,e,a),Mp;Qd(s)||Au(),t=Kf(e,t,n)}else Qd(s)?(t.flags|=192,t.child=e.child,t=null):(e=o.treeContext,Me=mn(s.nextSibling),ht=t,re=!0,Qa=null,pn=!1,e!==null&&Ub(t,e),t=Ld(t,a.children),t.flags|=4096);return t}return i?(qa(t),s=a.fallback,i=t.mode,o=e.child,u=o.sibling,a=ba(o,{mode:"hidden",children:a.children}),a.subtreeFlags=o.subtreeFlags&65011712,u!==null?s=ba(u,s):(s=wi(s,i,n,null),s.flags|=2),s.return=t,a.return=t,a.sibling=s,t.child=a,Kr(null,a),a=t.child,s=e.child.memoizedState,s===null?s=Yf(n):(i=s.cachePool,i!==null?(o=Ie._currentValue,i=i.parent!==o?{parent:o,pool:o}:i):i=Hb(),s={baseLanes:s.baseLanes|n,cachePool:i}),a.memoizedState=s,a.childLanes=Gf(e,r,n),t.memoizedState=Vf,Kr(e.child,a)):(Ha(t),n=e.child,e=n.sibling,n=ba(n,{mode:"visible",children:a.children}),n.return=t,n.sibling=null,e!==null&&(r=t.deletions,r===null?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Ld(e,t){return t=Tu({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function Tu(e,t){return e=Qt(22,e,null,t),e.lanes=0,e}function Kf(e,t,n){return Di(t,e.child,null,n),e=Ld(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function my(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),xd(e.return,t,n)}function Xf(e,t,n,a,i,l){var r=e.memoizedState;r===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:i,treeForkCount:l}:(r.isBackwards=t,r.rendering=null,r.renderingStartTime=0,r.last=a,r.tail=n,r.tailMode=i,r.treeForkCount=l)}function _v(e,t,n){var a=t.pendingProps,i=a.revealOrder,l=a.tail;a=a.children;var r=$e.current,s=(r&2)!==0;if(s?(r=r&1|2,t.flags|=128):r&=1,Ne($e,r),dt(e,t,a,n),a=re?us:0,!s&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&my(e,n,t);else if(e.tag===19)my(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(i){case"forwards":for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&yu(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Xf(t,!1,i,n,l,a);break;case"backwards":case"unstable_legacy-backwards":for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&yu(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Xf(t,!0,n,null,l,a);break;case"together":Xf(t,!1,null,null,void 0,a);break;default:t.memoizedState=null}return t.child}function Ea(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),ii|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(Fl(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(w(153));if(t.child!==null){for(e=t.child,n=ba(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=ba(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function zp(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&hu(e)))}function aE(e,t,n){switch(t.tag){case 3:su(t,t.stateNode.containerInfo),Ba(t,Ie,e.memoizedState.cache),Ci();break;case 27:case 5:ud(t);break;case 4:su(t,t.stateNode.containerInfo);break;case 10:Ba(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,Rd(t),null;break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Ha(t),t.flags|=128,null):(n&t.child.childLanes)!==0?Cv(e,t,n):(Ha(t),e=Ea(e,t,n),e!==null?e.sibling:null);Ha(t);break;case 19:var i=(e.flags&128)!==0;if(a=(n&t.childLanes)!==0,a||(Fl(e,t,n,!1),a=(n&t.childLanes)!==0),i){if(a)return _v(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),Ne($e,$e.current),a)break;return null;case 22:return t.lanes=0,Ov(e,t,n,t.pendingProps);case 24:Ba(t,Ie,e.memoizedState.cache)}return Ea(e,t,n)}function Dv(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps)Pe=!0;else{if(!zp(e,n)&&(t.flags&128)===0)return Pe=!1,aE(e,t,n);Pe=(e.flags&131072)!==0}else Pe=!1,re&&(t.flags&1048576)!==0&&Lb(t,us,t.index);switch(t.lanes=0,t.tag){case 16:e:{var a=t.pendingProps;if(e=ki(t.elementType),t.type=e,typeof e=="function")dp(e)?(a=zi(e,a),t.tag=1,t=py(null,t,e,a,n)):(t.tag=0,t=zd(null,t,e,a,n));else{if(e!=null){var i=e.$$typeof;if(i===Pd){t.tag=11,t=oy(null,t,e,a,n);break e}else if(i===Wd){t.tag=14,t=uy(null,t,e,a,n);break e}}throw t=sd(e)||e,Error(w(306,t,""))}}return t;case 0:return zd(e,t,t.type,t.pendingProps,n);case 1:return a=t.type,i=zi(a,t.pendingProps),py(e,t,a,i,n);case 3:e:{if(su(t,t.stateNode.containerInfo),e===null)throw Error(w(387));a=t.pendingProps;var l=t.memoizedState;i=l.element,Ad(e,t),Pr(t,a,null,n);var r=t.memoizedState;if(a=r.cache,Ba(t,Ie,a),a!==l.cache&&kd(t,[Ie],n,!0),Ir(),a=r.element,l.isDehydrated)if(l={element:a,isDehydrated:!1,cache:r.cache},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){t=hy(e,t,a,n);break e}else if(a!==i){i=dn(Error(w(424)),t),cs(i),t=hy(e,t,a,n);break e}else for(e=t.stateNode.containerInfo,e.nodeType===9?e=e.body:e=e.nodeName==="HTML"?e.ownerDocument.body:e,Me=mn(e.firstChild),ht=t,re=!0,Qa=null,pn=!0,n=Vb(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Ci(),a===i){t=Ea(e,t,n);break e}dt(e,t,a,n)}t=t.child}return t;case 26:return eu(e,t),e===null?(n=By(t.type,null,t.pendingProps,null))?t.memoizedState=n:re||(n=t.type,e=t.pendingProps,a=Ou($a.current).createElement(n),a[pt]=t,a[Ht]=e,gt(a,n,e),ot(a),t.stateNode=a):t.memoizedState=By(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return ud(t),e===null&&re&&(a=t.stateNode=x0(t.type,t.pendingProps,$a.current),ht=t,pn=!0,i=Me,ri(t.type)?(Fd=i,Me=mn(a.firstChild)):Me=i),dt(e,t,t.pendingProps.children,n),eu(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&re&&((i=a=Me)&&(a=_E(a,t.type,t.pendingProps,pn),a!==null?(t.stateNode=a,ht=t,Me=mn(a.firstChild),pn=!1,i=!0):i=!1),i||ni(t)),ud(t),i=t.type,l=t.pendingProps,r=e!==null?e.memoizedProps:null,a=l.children,Xd(i,l)?a=null:r!==null&&Xd(i,r)&&(t.flags|=32),t.memoizedState!==null&&(i=Tp(e,t,Zk,null,null,n),gs._currentValue=i),eu(e,t),dt(e,t,a,n),t.child;case 6:return e===null&&re&&((e=n=Me)&&(n=DE(n,t.pendingProps,pn),n!==null?(t.stateNode=n,ht=t,Me=null,e=!0):e=!1),e||ni(t)),null;case 13:return Cv(e,t,n);case 4:return su(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=Di(t,null,a,n):dt(e,t,a,n),t.child;case 11:return oy(e,t,t.type,t.pendingProps,n);case 7:return dt(e,t,t.pendingProps,n),t.child;case 8:return dt(e,t,t.pendingProps.children,n),t.child;case 12:return dt(e,t,t.pendingProps.children,n),t.child;case 10:return a=t.pendingProps,Ba(t,t.type,a.value),dt(e,t,a.children,n),t.child;case 9:return i=t.type._context,a=t.pendingProps.children,_i(t),i=mt(i),a=a(i),t.flags|=1,dt(e,t,a,n),t.child;case 14:return uy(e,t,t.type,t.pendingProps,n);case 15:return Rv(e,t,t.type,t.pendingProps,n);case 19:return _v(e,t,n);case 31:return nE(e,t,n);case 22:return Ov(e,t,n,t.pendingProps);case 24:return _i(t),a=mt(Ie),e===null?(i=gp(),i===null&&(i=Ae,l=mp(),i.pooledCache=l,l.refCount++,l!==null&&(i.pooledCacheLanes|=n),i=l),t.memoizedState={parent:a,cache:i},bp(t),Ba(t,Ie,i)):((e.lanes&n)!==0&&(Ad(e,t),Pr(t,null,null,n),Ir()),i=e.memoizedState,l=t.memoizedState,i.parent!==a?(i={parent:a,cache:a},t.memoizedState=i,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=i),Ba(t,Ie,a)):(a=l.cache,Ba(t,Ie,a),a!==i.cache&&kd(t,[Ie],n,!0))),dt(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(w(156,t.tag))}function ua(e){e.flags|=4}function $f(e,t,n,a,i){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(i&335544128)===i)if(e.stateNode.complete)e.flags|=8192;else if(n0())e.flags|=8192;else throw Ri=mu,yp}else e.flags&=-16777217}function gy(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!A0(t))if(n0())e.flags|=8192;else throw Ri=mu,yp}function Ho(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?ab():536870912,e.lanes|=t,Yl|=t)}function Br(e,t){if(!re)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function De(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,a|=i.subtreeFlags&65011712,a|=i.flags&65011712,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,a|=i.subtreeFlags,a|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function iE(e,t,n){var a=t.pendingProps;switch(hp(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return De(t),null;case 1:return De(t),null;case 3:return n=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),va(Ie),Ul(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(pl(t)?ua(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Bf())),De(t),null;case 26:var i=t.type,l=t.memoizedState;return e===null?(ua(t),l!==null?(De(t),gy(t,l)):(De(t),$f(t,i,null,a,n))):l?l!==e.memoizedState?(ua(t),De(t),gy(t,l)):(De(t),t.flags&=-16777217):(e=e.memoizedProps,e!==a&&ua(t),De(t),$f(t,i,e,a,n)),null;case 27:if(ou(t),n=$a.current,i=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&ua(t);else{if(!a){if(t.stateNode===null)throw Error(w(166));return De(t),null}e=Vn.current,pl(t)?Xg(t,e):(e=x0(i,a,n),t.stateNode=e,ua(t))}return De(t),null;case 5:if(ou(t),i=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&ua(t);else{if(!a){if(t.stateNode===null)throw Error(w(166));return De(t),null}if(l=Vn.current,pl(t))Xg(t,l);else{var r=Ou($a.current);switch(l){case 1:l=r.createElementNS("http://www.w3.org/2000/svg",i);break;case 2:l=r.createElementNS("http://www.w3.org/1998/Math/MathML",i);break;default:switch(i){case"svg":l=r.createElementNS("http://www.w3.org/2000/svg",i);break;case"math":l=r.createElementNS("http://www.w3.org/1998/Math/MathML",i);break;case"script":l=r.createElement("div"),l.innerHTML="<script><\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?r.createElement("select",{is:a.is}):r.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?r.createElement(i,{is:a.is}):r.createElement(i)}}l[pt]=t,l[Ht]=a;e:for(r=t.child;r!==null;){if(r.tag===5||r.tag===6)l.appendChild(r.stateNode);else if(r.tag!==4&&r.tag!==27&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break e;for(;r.sibling===null;){if(r.return===null||r.return===t)break e;r=r.return}r.sibling.return=r.return,r=r.sibling}t.stateNode=l;e:switch(gt(l,i,a),i){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&ua(t)}}return De(t),$f(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&ua(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(w(166));if(e=$a.current,pl(t)){if(e=t.stateNode,n=t.memoizedProps,a=null,i=ht,i!==null)switch(i.tag){case 27:case 5:a=i.memoizedProps}e[pt]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||b0(e.nodeValue,n)),e||ni(t,!0)}else e=Ou(e).createTextNode(a),e[pt]=t,t.stateNode=e}return De(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=pl(t),n!==null){if(e===null){if(!a)throw Error(w(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(w(557));e[pt]=t}else Ci(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;De(t),e=!1}else n=Bf(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?($t(t),t):($t(t),null);if((t.flags&128)!==0)throw Error(w(558))}return De(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=pl(t),a!==null&&a.dehydrated!==null){if(e===null){if(!i)throw Error(w(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(w(317));i[pt]=t}else Ci(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;De(t),i=!1}else i=Bf(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?($t(t),t):($t(t),null)}return $t(t),(t.flags&128)!==0?(t.lanes=n,t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,i=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(i=a.alternate.memoizedState.cachePool.pool),l=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(l=a.memoizedState.cachePool.pool),l!==i&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Ho(t,t.updateQueue),De(t),null);case 4:return Ul(),e===null&&Vp(t.stateNode.containerInfo),De(t),null;case 10:return va(t.type),De(t),null;case 19:if(ut($e),a=t.memoizedState,a===null)return De(t),null;if(i=(t.flags&128)!==0,l=a.rendering,l===null)if(i)Br(a,!1);else{if(Ve!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(l=yu(e),l!==null){for(t.flags|=128,Br(a,!1),e=l.updateQueue,t.updateQueue=e,Ho(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Mb(n,e),n=n.sibling;return Ne($e,$e.current&1|2),re&&pa(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&Ft()>ku&&(t.flags|=128,i=!0,Br(a,!1),t.lanes=4194304)}else{if(!i)if(e=yu(l),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,Ho(t,e),Br(a,!0),a.tail===null&&a.tailMode==="hidden"&&!l.alternate&&!re)return De(t),null}else 2*Ft()-a.renderingStartTime>ku&&n!==536870912&&(t.flags|=128,i=!0,Br(a,!1),t.lanes=4194304);a.isBackwards?(l.sibling=t.child,t.child=l):(e=a.last,e!==null?e.sibling=l:t.child=l,a.last=l)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=Ft(),e.sibling=null,n=$e.current,Ne($e,i?n&1|2:n&1),re&&pa(t,a.treeForkCount),e):(De(t),null);case 22:case 23:return $t(t),vp(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(De(t),t.subtreeFlags&6&&(t.flags|=8192)):De(t),n=t.updateQueue,n!==null&&Ho(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&ut(Ni),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),va(Ie),De(t),null;case 25:return null;case 30:return null}throw Error(w(156,t.tag))}function lE(e,t){switch(hp(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return va(Ie),Ul(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ou(t),null;case 31:if(t.memoizedState!==null){if($t(t),t.alternate===null)throw Error(w(340));Ci()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if($t(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(w(340));Ci()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ut($e),null;case 4:return Ul(),null;case 10:return va(t.type),null;case 22:case 23:return $t(t),vp(),e!==null&&ut(Ni),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return va(Ie),null;case 25:return null;default:return null}}function Mv(e,t){switch(hp(t),t.tag){case 3:va(Ie),Ul();break;case 26:case 27:case 5:ou(t);break;case 4:Ul();break;case 31:t.memoizedState!==null&&$t(t);break;case 13:$t(t);break;case 19:ut($e);break;case 10:va(t.type);break;case 22:case 23:$t(t),vp(),e!==null&&ut(Ni);break;case 24:va(Ie)}}function Ns(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var i=a.next;n=i;do{if((n.tag&e)===e){a=void 0;var l=n.create,r=n.inst;a=l(),r.destroy=a}n=n.next}while(n!==i)}}catch(s){Se(t,t.return,s)}}function ai(e,t,n){try{var a=t.updateQueue,i=a!==null?a.lastEffect:null;if(i!==null){var l=i.next;a=l;do{if((a.tag&e)===e){var r=a.inst,s=r.destroy;if(s!==void 0){r.destroy=void 0,i=t;var o=n,u=s;try{u()}catch(c){Se(i,o,c)}}}a=a.next}while(a!==l)}}catch(c){Se(t,t.return,c)}}function zv(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Gb(t,n)}catch(a){Se(e,e.return,a)}}}function Lv(e,t,n){n.props=zi(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(a){Se(e,t,a)}}function es(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof n=="function"?e.refCleanup=n(a):n.current=a}}catch(i){Se(e,t,i)}}function jn(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{a()}catch(i){Se(e,t,i)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(i){Se(e,t,i)}else n.current=null}function Uv(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&a.focus();break e;case"img":n.src?a.src=n.src:n.srcSet&&(a.srcset=n.srcSet)}}catch(i){Se(e,e.return,i)}}function Qf(e,t,n){try{var a=e.stateNode;AE(a,e.type,n,t),a[Ht]=t}catch(i){Se(e,e.return,i)}}function Bv(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&ri(e.type)||e.tag===4}function Zf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Bv(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&ri(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ud(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=ga));else if(a!==4&&(a===27&&ri(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Ud(e,t,n),e=e.sibling;e!==null;)Ud(e,t,n),e=e.sibling}function xu(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&ri(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(xu(e,t,n),e=e.sibling;e!==null;)xu(e,t,n),e=e.sibling}function Hv(e){var t=e.stateNode,n=e.memoizedProps;try{for(var a=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);gt(t,a,n),t[pt]=e,t[Ht]=n}catch(l){Se(e,e.return,l)}}var ha=!1,Je=!1,Ff=!1,yy=typeof WeakSet=="function"?WeakSet:Set,st=null;function rE(e,t){if(e=e.containerInfo,Gd=Mu,e=Ab(e),up(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var i=a.anchorOffset,l=a.focusNode;a=a.focusOffset;try{n.nodeType,l.nodeType}catch(g){n=null;break e}var r=0,s=-1,o=-1,u=0,c=0,f=e,d=null;t:for(;;){for(var h;f!==n||i!==0&&f.nodeType!==3||(s=r+i),f!==l||a!==0&&f.nodeType!==3||(o=r+a),f.nodeType===3&&(r+=f.nodeValue.length),(h=f.firstChild)!==null;)d=f,f=h;for(;;){if(f===e)break t;if(d===n&&++u===i&&(s=r),d===l&&++c===a&&(o=r),(h=f.nextSibling)!==null)break;f=d,d=f.parentNode}f=h}n=s===-1||o===-1?null:{start:s,end:o}}else n=null}n=n||{start:0,end:0}}else n=null;for(Kd={focusedElem:e,selectionRange:n},Mu=!1,st=t;st!==null;)if(t=st,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,st=e;else for(;st!==null;){switch(t=st,l=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n<e.length;n++)i=e[n],i.ref.impl=i.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&l!==null){e=void 0,n=t,i=l.memoizedProps,l=l.memoizedState,a=n.stateNode;try{var v=zi(n.type,i);e=a.getSnapshotBeforeUpdate(v,l),a.__reactInternalSnapshotBeforeUpdate=e}catch(g){Se(n,n.return,g)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,n=e.nodeType,n===9)$d(e);else if(n===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":$d(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(w(163))}if(e=t.sibling,e!==null){e.return=t.return,st=e;break}st=t.return}}function qv(e,t,n){var a=n.flags;switch(n.tag){case 0:case 11:case 15:fa(e,n),a&4&&Ns(5,n);break;case 1:if(fa(e,n),a&4)if(e=n.stateNode,t===null)try{e.componentDidMount()}catch(r){Se(n,n.return,r)}else{var i=zi(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(i,t,e.__reactInternalSnapshotBeforeUpdate)}catch(r){Se(n,n.return,r)}}a&64&&zv(n),a&512&&es(n,n.return);break;case 3:if(fa(e,n),a&64&&(e=n.updateQueue,e!==null)){if(t=null,n.child!==null)switch(n.child.tag){case 27:case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}try{Gb(e,t)}catch(r){Se(n,n.return,r)}}break;case 27:t===null&&a&4&&Hv(n);case 26:case 5:fa(e,n),t===null&&a&4&&Uv(n),a&512&&es(n,n.return);break;case 12:fa(e,n);break;case 31:fa(e,n),a&4&&Yv(e,n);break;case 13:fa(e,n),a&4&&Gv(e,n),a&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(n=mE.bind(null,n),ME(e,n))));break;case 22:if(a=n.memoizedState!==null||ha,!a){t=t!==null&&t.memoizedState!==null||Je,i=ha;var l=Je;ha=a,(Je=t)&&!l?da(e,n,(n.subtreeFlags&8772)!==0):fa(e,n),ha=i,Je=l}break;case 30:break;default:fa(e,n)}}function jv(e){var t=e.alternate;t!==null&&(e.alternate=null,jv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&ap(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var He=null,Lt=!1;function ca(e,t,n){for(n=n.child;n!==null;)Vv(e,t,n),n=n.sibling}function Vv(e,t,n){if(Jt&&typeof Jt.onCommitFiberUnmount=="function")try{Jt.onCommitFiberUnmount(Ss,n)}catch(l){}switch(n.tag){case 26:Je||jn(n,t),ca(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode,n.parentNode.removeChild(n));break;case 27:Je||jn(n,t);var a=He,i=Lt;ri(n.type)&&(He=n.stateNode,Lt=!1),ca(e,t,n),is(n.stateNode),He=a,Lt=i;break;case 5:Je||jn(n,t);case 6:if(a=He,i=Lt,He=null,ca(e,t,n),He=a,Lt=i,He!==null)if(Lt)try{(He.nodeType===9?He.body:He.nodeName==="HTML"?He.ownerDocument.body:He).removeChild(n.stateNode)}catch(l){Se(n,t,l)}else try{He.removeChild(n.stateNode)}catch(l){Se(n,t,l)}break;case 18:He!==null&&(Lt?(e=He,Dy(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,n.stateNode),$l(e)):Dy(He,n.stateNode));break;case 4:a=He,i=Lt,He=n.stateNode.containerInfo,Lt=!0,ca(e,t,n),He=a,Lt=i;break;case 0:case 11:case 14:case 15:ai(2,n,t),Je||ai(4,n,t),ca(e,t,n);break;case 1:Je||(jn(n,t),a=n.stateNode,typeof a.componentWillUnmount=="function"&&Lv(n,t,a)),ca(e,t,n);break;case 21:ca(e,t,n);break;case 22:Je=(a=Je)||n.memoizedState!==null,ca(e,t,n),Je=a;break;default:ca(e,t,n)}}function Yv(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{$l(e)}catch(n){Se(t,t.return,n)}}}function Gv(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{$l(e)}catch(n){Se(t,t.return,n)}}function sE(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new yy),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new yy),t;default:throw Error(w(435,e.tag))}}function qo(e,t){var n=sE(e);t.forEach(function(a){if(!n.has(a)){n.add(a);var i=gE.bind(null,e,a);a.then(i,i)}})}function Mt(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var i=n[a],l=e,r=t,s=r;e:for(;s!==null;){switch(s.tag){case 27:if(ri(s.type)){He=s.stateNode,Lt=!1;break e}break;case 5:He=s.stateNode,Lt=!1;break e;case 3:case 4:He=s.stateNode.containerInfo,Lt=!0;break e}s=s.return}if(He===null)throw Error(w(160));Vv(l,r,i),He=null,Lt=!1,l=i.alternate,l!==null&&(l.return=null),i.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)Kv(t,e),t=t.sibling}var wn=null;function Kv(e,t){var n=e.alternate,a=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Mt(t,e),zt(e),a&4&&(ai(3,e,e.return),Ns(3,e),ai(5,e,e.return));break;case 1:Mt(t,e),zt(e),a&512&&(Je||n===null||jn(n,n.return)),a&64&&ha&&(e=e.updateQueue,e!==null&&(a=e.callbacks,a!==null&&(n=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=n===null?a:n.concat(a))));break;case 26:var i=wn;if(Mt(t,e),zt(e),a&512&&(Je||n===null||jn(n,n.return)),a&4){var l=n!==null?n.memoizedState:null;if(a=e.memoizedState,n===null)if(a===null)if(e.stateNode===null){e:{a=e.type,n=e.memoizedProps,i=i.ownerDocument||i;t:switch(a){case"title":l=i.getElementsByTagName("title")[0],(!l||l[ks]||l[pt]||l.namespaceURI==="http://www.w3.org/2000/svg"||l.hasAttribute("itemprop"))&&(l=i.createElement(a),i.head.insertBefore(l,i.querySelector("head > title"))),gt(l,a,n),l[pt]=e,ot(l),a=l;break e;case"link":var r=qy("link","href",i).get(a+(n.href||""));if(r){for(var s=0;s<r.length;s++)if(l=r[s],l.getAttribute("href")===(n.href==null||n.href===""?null:n.href)&&l.getAttribute("rel")===(n.rel==null?null:n.rel)&&l.getAttribute("title")===(n.title==null?null:n.title)&&l.getAttribute("crossorigin")===(n.crossOrigin==null?null:n.crossOrigin)){r.splice(s,1);break t}}l=i.createElement(a),gt(l,a,n),i.head.appendChild(l);break;case"meta":if(r=qy("meta","content",i).get(a+(n.content||""))){for(s=0;s<r.length;s++)if(l=r[s],l.getAttribute("content")===(n.content==null?null:""+n.content)&&l.getAttribute("name")===(n.name==null?null:n.name)&&l.getAttribute("property")===(n.property==null?null:n.property)&&l.getAttribute("http-equiv")===(n.httpEquiv==null?null:n.httpEquiv)&&l.getAttribute("charset")===(n.charSet==null?null:n.charSet)){r.splice(s,1);break t}}l=i.createElement(a),gt(l,a,n),i.head.appendChild(l);break;default:throw Error(w(468,a))}l[pt]=e,ot(l),a=l}e.stateNode=a}else jy(i,e.type,e.stateNode);else e.stateNode=Hy(i,a,e.memoizedProps);else l!==a?(l===null?n.stateNode!==null&&(n=n.stateNode,n.parentNode.removeChild(n)):l.count--,a===null?jy(i,e.type,e.stateNode):Hy(i,a,e.memoizedProps)):a===null&&e.stateNode!==null&&Qf(e,e.memoizedProps,n.memoizedProps)}break;case 27:Mt(t,e),zt(e),a&512&&(Je||n===null||jn(n,n.return)),n!==null&&a&4&&Qf(e,e.memoizedProps,n.memoizedProps);break;case 5:if(Mt(t,e),zt(e),a&512&&(Je||n===null||jn(n,n.return)),e.flags&32){i=e.stateNode;try{Hl(i,"")}catch(v){Se(e,e.return,v)}}a&4&&e.stateNode!=null&&(i=e.memoizedProps,Qf(e,i,n!==null?n.memoizedProps:i)),a&1024&&(Ff=!0);break;case 6:if(Mt(t,e),zt(e),a&4){if(e.stateNode===null)throw Error(w(162));a=e.memoizedProps,n=e.stateNode;try{n.nodeValue=a}catch(v){Se(e,e.return,v)}}break;case 3:if(au=null,i=wn,wn=Cu(t.containerInfo),Mt(t,e),wn=i,zt(e),a&4&&n!==null&&n.memoizedState.isDehydrated)try{$l(t.containerInfo)}catch(v){Se(e,e.return,v)}Ff&&(Ff=!1,Xv(e));break;case 4:a=wn,wn=Cu(e.stateNode.containerInfo),Mt(t,e),zt(e),wn=a;break;case 12:Mt(t,e),zt(e);break;case 31:Mt(t,e),zt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,qo(e,a)));break;case 13:Mt(t,e),zt(e),e.child.flags&8192&&e.memoizedState!==null!=(n!==null&&n.memoizedState!==null)&&($u=Ft()),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,qo(e,a)));break;case 22:i=e.memoizedState!==null;var o=n!==null&&n.memoizedState!==null,u=ha,c=Je;if(ha=u||i,Je=c||o,Mt(t,e),Je=c,ha=u,zt(e),a&8192)e:for(t=e.stateNode,t._visibility=i?t._visibility&-2:t._visibility|1,i&&(n===null||o||ha||Je||Ei(e)),n=null,t=e;;){if(t.tag===5||t.tag===26){if(n===null){o=n=t;try{if(l=o.stateNode,i)r=l.style,typeof r.setProperty=="function"?r.setProperty("display","none","important"):r.display="none";else{s=o.stateNode;var f=o.memoizedProps.style,d=f!=null&&f.hasOwnProperty("display")?f.display:null;s.style.display=d==null||typeof d=="boolean"?"":(""+d).trim()}}catch(v){Se(o,o.return,v)}}}else if(t.tag===6){if(n===null){o=t;try{o.stateNode.nodeValue=i?"":o.memoizedProps}catch(v){Se(o,o.return,v)}}}else if(t.tag===18){if(n===null){o=t;try{var h=o.stateNode;i?My(h,!0):My(o.stateNode,!1)}catch(v){Se(o,o.return,v)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;n===t&&(n=null),t=t.return}n===t&&(n=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=e.updateQueue,a!==null&&(n=a.retryQueue,n!==null&&(a.retryQueue=null,qo(e,n))));break;case 19:Mt(t,e),zt(e),a&4&&(a=e.updateQueue,a!==null&&(e.updateQueue=null,qo(e,a)));break;case 30:break;case 21:break;default:Mt(t,e),zt(e)}}function zt(e){var t=e.flags;if(t&2){try{for(var n,a=e.return;a!==null;){if(Bv(a)){n=a;break}a=a.return}if(n==null)throw Error(w(160));switch(n.tag){case 27:var i=n.stateNode,l=Zf(e);xu(e,l,i);break;case 5:var r=n.stateNode;n.flags&32&&(Hl(r,""),n.flags&=-33);var s=Zf(e);xu(e,s,r);break;case 3:case 4:var o=n.stateNode.containerInfo,u=Zf(e);Ud(e,u,o);break;default:throw Error(w(161))}}catch(c){Se(e,e.return,c)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Xv(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;Xv(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function fa(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)qv(e,t.alternate,t),t=t.sibling}function Ei(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ai(4,t,t.return),Ei(t);break;case 1:jn(t,t.return);var n=t.stateNode;typeof n.componentWillUnmount=="function"&&Lv(t,t.return,n),Ei(t);break;case 27:is(t.stateNode);case 26:case 5:jn(t,t.return),Ei(t);break;case 22:t.memoizedState===null&&Ei(t);break;case 30:Ei(t);break;default:Ei(t)}e=e.sibling}}function da(e,t,n){for(n=n&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,i=e,l=t,r=l.flags;switch(l.tag){case 0:case 11:case 15:da(i,l,n),Ns(4,l);break;case 1:if(da(i,l,n),a=l,i=a.stateNode,typeof i.componentDidMount=="function")try{i.componentDidMount()}catch(u){Se(a,a.return,u)}if(a=l,i=a.updateQueue,i!==null){var s=a.stateNode;try{var o=i.shared.hiddenCallbacks;if(o!==null)for(i.shared.hiddenCallbacks=null,i=0;i<o.length;i++)Yb(o[i],s)}catch(u){Se(a,a.return,u)}}n&&r&64&&zv(l),es(l,l.return);break;case 27:Hv(l);case 26:case 5:da(i,l,n),n&&a===null&&r&4&&Uv(l),es(l,l.return);break;case 12:da(i,l,n);break;case 31:da(i,l,n),n&&r&4&&Yv(i,l);break;case 13:da(i,l,n),n&&r&4&&Gv(i,l);break;case 22:l.memoizedState===null&&da(i,l,n),es(l,l.return);break;case 30:break;default:da(i,l,n)}t=t.sibling}}function Lp(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&e.refCount++,n!=null&&As(n))}function Up(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&As(e))}function An(e,t,n,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)$v(e,t,n,a),t=t.sibling}function $v(e,t,n,a){var i=t.flags;switch(t.tag){case 0:case 11:case 15:An(e,t,n,a),i&2048&&Ns(9,t);break;case 1:An(e,t,n,a);break;case 3:An(e,t,n,a),i&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&As(e)));break;case 12:if(i&2048){An(e,t,n,a),e=t.stateNode;try{var l=t.memoizedProps,r=l.id,s=l.onPostCommit;typeof s=="function"&&s(r,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(o){Se(t,t.return,o)}}else An(e,t,n,a);break;case 31:An(e,t,n,a);break;case 13:An(e,t,n,a);break;case 23:break;case 22:l=t.stateNode,r=t.alternate,t.memoizedState!==null?l._visibility&2?An(e,t,n,a):ts(e,t):l._visibility&2?An(e,t,n,a):(l._visibility|=2,ml(e,t,n,a,(t.subtreeFlags&10256)!==0||!1)),i&2048&&Lp(r,t);break;case 24:An(e,t,n,a),i&2048&&Up(t.alternate,t);break;default:An(e,t,n,a)}}function ml(e,t,n,a,i){for(i=i&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var l=e,r=t,s=n,o=a,u=r.flags;switch(r.tag){case 0:case 11:case 15:ml(l,r,s,o,i),Ns(8,r);break;case 23:break;case 22:var c=r.stateNode;r.memoizedState!==null?c._visibility&2?ml(l,r,s,o,i):ts(l,r):(c._visibility|=2,ml(l,r,s,o,i)),i&&u&2048&&Lp(r.alternate,r);break;case 24:ml(l,r,s,o,i),i&&u&2048&&Up(r.alternate,r);break;default:ml(l,r,s,o,i)}t=t.sibling}}function ts(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var n=e,a=t,i=a.flags;switch(a.tag){case 22:ts(n,a),i&2048&&Lp(a.alternate,a);break;case 24:ts(n,a),i&2048&&Up(a.alternate,a);break;default:ts(n,a)}t=t.sibling}}var Xr=8192;function hl(e,t,n){if(e.subtreeFlags&Xr)for(e=e.child;e!==null;)Qv(e,t,n),e=e.sibling}function Qv(e,t,n){switch(e.tag){case 26:hl(e,t,n),e.flags&Xr&&e.memoizedState!==null&&XE(n,wn,e.memoizedState,e.memoizedProps);break;case 5:hl(e,t,n);break;case 3:case 4:var a=wn;wn=Cu(e.stateNode.containerInfo),hl(e,t,n),wn=a;break;case 22:e.memoizedState===null&&(a=e.alternate,a!==null&&a.memoizedState!==null?(a=Xr,Xr=16777216,hl(e,t,n),Xr=a):hl(e,t,n));break;default:hl(e,t,n)}}function Zv(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function Hr(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];st=a,Jv(a,e)}Zv(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)Fv(e),e=e.sibling}function Fv(e){switch(e.tag){case 0:case 11:case 15:Hr(e),e.flags&2048&&ai(9,e,e.return);break;case 3:Hr(e);break;case 12:Hr(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,tu(e)):Hr(e);break;default:Hr(e)}}function tu(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n];st=a,Jv(a,e)}Zv(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ai(8,t,t.return),tu(t);break;case 22:n=t.stateNode,n._visibility&2&&(n._visibility&=-3,tu(t));break;default:tu(t)}e=e.sibling}}function Jv(e,t){for(;st!==null;){var n=st;switch(n.tag){case 0:case 11:case 15:ai(8,n,t);break;case 23:case 22:if(n.memoizedState!==null&&n.memoizedState.cachePool!==null){var a=n.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:As(n.memoizedState.cache)}if(a=n.child,a!==null)a.return=n,st=a;else e:for(n=e;st!==null;){a=st;var i=a.sibling,l=a.return;if(jv(a),a===n){st=null;break e}if(i!==null){i.return=l,st=i;break e}st=l}}}var oE={getCacheForType:function(e){var t=mt(Ie),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return mt(Ie).controller.signal}},uE=typeof WeakMap=="function"?WeakMap:Map,ce=0,Ae=null,ae=null,le=0,ve=0,Xt=null,Ga=!1,Il=!1,Bp=!1,Aa=0,Ve=0,ii=0,Oi=0,Hp=0,Zt=0,Yl=0,ns=null,Ut=null,Bd=!1,$u=0,Iv=0,ku=1/0,Eu=null,Ja=null,tt=0,Ia=null,Gl=null,Sa=0,Hd=0,qd=null,Pv=null,as=0,jd=null;function Pt(){return(ce&2)!==0&&le!==0?le&-le:Z.T!==null?jp():sb()}function Wv(){if(Zt===0)if((le&536870912)===0||re){var e=Oo;Oo<<=1,(Oo&3932160)===0&&(Oo=262144),Zt=e}else Zt=536870912;return e=en.current,e!==null&&(e.flags|=32),Zt}function Bt(e,t,n){(e===Ae&&(ve===2||ve===9)||e.cancelPendingCommit!==null)&&(Kl(e,0),Ka(e,le,Zt,!1)),xs(e,n),((ce&2)===0||e!==Ae)&&(e===Ae&&((ce&2)===0&&(Oi|=n),Ve===4&&Ka(e,le,Zt,!1)),Gn(e))}function e0(e,t,n){if((ce&6)!==0)throw Error(w(327));var a=!n&&(t&127)===0&&(t&e.expiredLanes)===0||Ts(e,t),i=a?dE(e,t):Jf(e,t,!0),l=a;do{if(i===0){Il&&!a&&Ka(e,t,0,!1);break}else{if(n=e.current.alternate,l&&!cE(n)){i=Jf(e,t,!1),l=!1;continue}if(i===2){if(l=t,e.errorRecoveryDisabledLanes&l)var r=0;else r=e.pendingLanes&-536870913,r=r!==0?r:r&536870912?536870912:0;if(r!==0){t=r;e:{var s=e;i=ns;var o=s.current.memoizedState.isDehydrated;if(o&&(Kl(s,r).flags|=256),r=Jf(s,r,!1),r!==2){if(Bp&&!o){s.errorRecoveryDisabledLanes|=l,Oi|=l,i=4;break e}l=Ut,Ut=i,l!==null&&(Ut===null?Ut=l:Ut.push.apply(Ut,l))}i=r}if(l=!1,i!==2)continue}}if(i===1){Kl(e,0),Ka(e,t,0,!0);break}e:{switch(a=e,l=i,l){case 0:case 1:throw Error(w(345));case 4:if((t&4194048)!==t)break;case 6:Ka(a,t,Zt,!Ga);break e;case 2:Ut=null;break;case 3:case 5:break;default:throw Error(w(329))}if((t&62914560)===t&&(i=$u+300-Ft(),10<i)){if(Ka(a,t,Zt,!Ga),Lu(a,0,!0)!==0)break e;Sa=t,a.timeoutHandle=S0(by.bind(null,a,n,Ut,Eu,Bd,t,Zt,Oi,Yl,Ga,l,"Throttled",-0,0),i);break e}by(a,n,Ut,Eu,Bd,t,Zt,Oi,Yl,Ga,l,null,-0,0)}}break}while(!0);Gn(e)}function by(e,t,n,a,i,l,r,s,o,u,c,f,d,h){if(e.timeoutHandle=-1,f=t.subtreeFlags,f&8192||(f&16785408)===16785408){f={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:ga},Qv(t,l,f);var v=(l&62914560)===l?$u-Ft():(l&4194048)===l?Iv-Ft():0;if(v=$E(f,v),v!==null){Sa=l,e.cancelPendingCommit=v(Sy.bind(null,e,t,l,n,a,i,r,s,o,c,f,null,d,h)),Ka(e,l,r,!u);return}}Sy(e,t,l,n,a,i,r,s,o)}function cE(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var a=0;a<n.length;a++){var i=n[a],l=i.getSnapshot;i=i.value;try{if(!Wt(l(),i))return!1}catch(r){return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Ka(e,t,n,a){t&=~Hp,t&=~Oi,e.suspendedLanes|=t,e.pingedLanes&=~t,a&&(e.warmLanes|=t),a=e.expirationTimes;for(var i=t;0<i;){var l=31-It(i),r=1<<l;a[l]=-1,i&=~r}n!==0&&ib(e,n,t)}function Qu(){return(ce&6)===0?(Rs(0,!1),!1):!0}function qp(){if(ae!==null){if(ve===0)var e=ae.return;else e=ae,ya=qi=null,Ep(e),Ml=null,fs=0,e=ae;for(;e!==null;)Mv(e.alternate,e),e=e.return;ae=null}}function Kl(e,t){var n=e.timeoutHandle;n!==-1&&(e.timeoutHandle=-1,RE(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),Sa=0,qp(),Ae=e,ae=n=ba(e.current,null),le=t,ve=0,Xt=null,Ga=!1,Il=Ts(e,t),Bp=!1,Yl=Zt=Hp=Oi=ii=Ve=0,Ut=ns=null,Bd=!1,(t&8)!==0&&(t|=t&32);var a=e.entangledLanes;if(a!==0)for(e=e.entanglements,a&=t;0<a;){var i=31-It(a),l=1<<i;t|=e[i],a&=~l}return Aa=t,qu(),n}function t0(e,t){W=null,Z.H=ps,t===Jl||t===Vu?(t=Jg(),ve=3):t===yp?(t=Jg(),ve=4):ve=t===Mp?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,Xt=t,ae===null&&(Ve=1,Su(e,dn(t,e.current)))}function n0(){var e=en.current;return e===null?!0:(le&4194048)===le?hn===null:(le&62914560)===le||(le&536870912)!==0?e===hn:!1}function a0(){var e=Z.H;return Z.H=ps,e===null?ps:e}function i0(){var e=Z.A;return Z.A=oE,e}function Au(){Ve=4,Ga||(le&4194048)!==le&&en.current!==null||(Il=!0),(ii&134217727)===0&&(Oi&134217727)===0||Ae===null||Ka(Ae,le,Zt,!1)}function Jf(e,t,n){var a=ce;ce|=2;var i=a0(),l=i0();(Ae!==e||le!==t)&&(Eu=null,Kl(e,t)),t=!1;var r=Ve;e:do try{if(ve!==0&&ae!==null){var s=ae,o=Xt;switch(ve){case 8:qp(),r=6;break e;case 3:case 2:case 9:case 6:en.current===null&&(t=!0);var u=ve;if(ve=0,Xt=null,Rl(e,s,o,u),n&&Il){r=0;break e}break;default:u=ve,ve=0,Xt=null,Rl(e,s,o,u)}}fE(),r=Ve;break}catch(c){t0(e,c)}while(!0);return t&&e.shellSuspendCounter++,ya=qi=null,ce=a,Z.H=i,Z.A=l,ae===null&&(Ae=null,le=0,qu()),r}function fE(){for(;ae!==null;)l0(ae)}function dE(e,t){var n=ce;ce|=2;var a=a0(),i=i0();Ae!==e||le!==t?(Eu=null,ku=Ft()+500,Kl(e,t)):Il=Ts(e,t);e:do try{if(ve!==0&&ae!==null){t=ae;var l=Xt;t:switch(ve){case 1:ve=0,Xt=null,Rl(e,t,l,1);break;case 2:case 9:if(Fg(l)){ve=0,Xt=null,vy(t);break}t=function(){ve!==2&&ve!==9||Ae!==e||(ve=7),Gn(e)},l.then(t,t);break e;case 3:ve=7;break e;case 4:ve=5;break e;case 7:Fg(l)?(ve=0,Xt=null,vy(t)):(ve=0,Xt=null,Rl(e,t,l,7));break;case 5:var r=null;switch(ae.tag){case 26:r=ae.memoizedState;case 5:case 27:var s=ae;if(r?A0(r):s.stateNode.complete){ve=0,Xt=null;var o=s.sibling;if(o!==null)ae=o;else{var u=s.return;u!==null?(ae=u,Zu(u)):ae=null}break t}}ve=0,Xt=null,Rl(e,t,l,5);break;case 6:ve=0,Xt=null,Rl(e,t,l,6);break;case 8:qp(),Ve=6;break e;default:throw Error(w(462))}}pE();break}catch(c){t0(e,c)}while(!0);return ya=qi=null,Z.H=a,Z.A=i,ce=n,ae!==null?0:(Ae=null,le=0,qu(),Ve)}function pE(){for(;ae!==null&&!Ux();)l0(ae)}function l0(e){var t=Dv(e.alternate,e,Aa);e.memoizedProps=e.pendingProps,t===null?Zu(e):ae=t}function vy(e){var t=e,n=t.alternate;switch(t.tag){case 15:case 0:t=dy(n,t,t.pendingProps,t.type,void 0,le);break;case 11:t=dy(n,t,t.pendingProps,t.type.render,t.ref,le);break;case 5:Ep(t);default:Mv(n,t),t=ae=Mb(t,Aa),t=Dv(n,t,Aa)}e.memoizedProps=e.pendingProps,t===null?Zu(e):ae=t}function Rl(e,t,n,a){ya=qi=null,Ep(t),Ml=null,fs=0;var i=t.return;try{if(tE(e,i,t,n,le)){Ve=1,Su(e,dn(n,e.current)),ae=null;return}}catch(l){if(i!==null)throw ae=i,l;Ve=1,Su(e,dn(n,e.current)),ae=null;return}t.flags&32768?(re||a===1?e=!0:Il||(le&536870912)!==0?e=!1:(Ga=e=!0,(a===2||a===9||a===3||a===6)&&(a=en.current,a!==null&&a.tag===13&&(a.flags|=16384))),r0(t,e)):Zu(t)}function Zu(e){var t=e;do{if((t.flags&32768)!==0){r0(t,Ga);return}e=t.return;var n=iE(t.alternate,t,Aa);if(n!==null){ae=n;return}if(t=t.sibling,t!==null){ae=t;return}ae=t=e}while(t!==null);Ve===0&&(Ve=5)}function r0(e,t){do{var n=lE(e.alternate,e);if(n!==null){n.flags&=32767,ae=n;return}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){ae=e;return}ae=e=n}while(e!==null);Ve=6,ae=null}function Sy(e,t,n,a,i,l,r,s,o){e.cancelPendingCommit=null;do Fu();while(tt!==0);if((ce&6)!==0)throw Error(w(327));if(t!==null){if(t===e.current)throw Error(w(177));if(l=t.lanes|t.childLanes,l|=cp,$x(e,n,l,r,s,o),e===Ae&&(ae=Ae=null,le=0),Gl=t,Ia=e,Sa=n,Hd=l,qd=i,Pv=a,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,yE(uu,function(){return f0(),null})):(e.callbackNode=null,e.callbackPriority=0),a=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||a){a=Z.T,Z.T=null,i=fe.p,fe.p=2,r=ce,ce|=4;try{rE(e,t,n)}finally{ce=r,fe.p=i,Z.T=a}}tt=1,s0(),o0(),u0()}}function s0(){if(tt===1){tt=0;var e=Ia,t=Gl,n=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||n){n=Z.T,Z.T=null;var a=fe.p;fe.p=2;var i=ce;ce|=4;try{Kv(t,e);var l=Kd,r=Ab(e.containerInfo),s=l.focusedElem,o=l.selectionRange;if(r!==s&&s&&s.ownerDocument&&Eb(s.ownerDocument.documentElement,s)){if(o!==null&&up(s)){var u=o.start,c=o.end;if(c===void 0&&(c=u),"selectionStart"in s)s.selectionStart=u,s.selectionEnd=Math.min(c,s.value.length);else{var f=s.ownerDocument||document,d=f&&f.defaultView||window;if(d.getSelection){var h=d.getSelection(),v=s.textContent.length,g=Math.min(o.start,v),k=o.end===void 0?g:Math.min(o.end,v);!h.extend&&g>k&&(r=k,k=g,g=r);var m=Yg(s,g),p=Yg(s,k);if(m&&p&&(h.rangeCount!==1||h.anchorNode!==m.node||h.anchorOffset!==m.offset||h.focusNode!==p.node||h.focusOffset!==p.offset)){var b=f.createRange();b.setStart(m.node,m.offset),h.removeAllRanges(),g>k?(h.addRange(b),h.extend(p.node,p.offset)):(b.setEnd(p.node,p.offset),h.addRange(b))}}}}for(f=[],h=s;h=h.parentNode;)h.nodeType===1&&f.push({element:h,left:h.scrollLeft,top:h.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;s<f.length;s++){var S=f[s];S.element.scrollLeft=S.left,S.element.scrollTop=S.top}}Mu=!!Gd,Kd=Gd=null}finally{ce=i,fe.p=a,Z.T=n}}e.current=t,tt=2}}function o0(){if(tt===2){tt=0;var e=Ia,t=Gl,n=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||n){n=Z.T,Z.T=null;var a=fe.p;fe.p=2;var i=ce;ce|=4;try{qv(e,t.alternate,t)}finally{ce=i,fe.p=a,Z.T=n}}tt=3}}function u0(){if(tt===4||tt===3){tt=0,Bx();var e=Ia,t=Gl,n=Sa,a=Pv;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?tt=5:(tt=0,Gl=Ia=null,c0(e,e.pendingLanes));var i=e.pendingLanes;if(i===0&&(Ja=null),np(n),t=t.stateNode,Jt&&typeof Jt.onCommitFiberRoot=="function")try{Jt.onCommitFiberRoot(Ss,t,void 0,(t.current.flags&128)===128)}catch(o){}if(a!==null){t=Z.T,i=fe.p,fe.p=2,Z.T=null;try{for(var l=e.onRecoverableError,r=0;r<a.length;r++){var s=a[r];l(s.value,{componentStack:s.stack})}}finally{Z.T=t,fe.p=i}}(Sa&3)!==0&&Fu(),Gn(e),i=e.pendingLanes,(n&261930)!==0&&(i&42)!==0?e===jd?as++:(as=0,jd=e):as=0,Rs(0,!1)}}function c0(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,As(t)))}function Fu(){return s0(),o0(),u0(),f0()}function f0(){if(tt!==5)return!1;var e=Ia,t=Hd;Hd=0;var n=np(Sa),a=Z.T,i=fe.p;try{fe.p=32>n?32:n,Z.T=null,n=qd,qd=null;var l=Ia,r=Sa;if(tt=0,Gl=Ia=null,Sa=0,(ce&6)!==0)throw Error(w(331));var s=ce;if(ce|=4,Fv(l.current),$v(l,l.current,r,n),ce=s,Rs(0,!1),Jt&&typeof Jt.onPostCommitFiberRoot=="function")try{Jt.onPostCommitFiberRoot(Ss,l)}catch(o){}return!0}finally{fe.p=i,Z.T=a,c0(e,t)}}function Ty(e,t,n){t=dn(n,t),t=Md(e.stateNode,t,2),e=Fa(e,t,2),e!==null&&(xs(e,2),Gn(e))}function Se(e,t,n){if(e.tag===3)Ty(e,e,n);else for(;t!==null;){if(t.tag===3){Ty(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Ja===null||!Ja.has(a))){e=dn(n,e),n=wv(2),a=Fa(t,n,2),a!==null&&(Nv(n,a,t,e),xs(a,2),Gn(a));break}}t=t.return}}function If(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new uE;var i=new Set;a.set(t,i)}else i=a.get(t),i===void 0&&(i=new Set,a.set(t,i));i.has(n)||(Bp=!0,i.add(n),e=hE.bind(null,e,t,n),t.then(e,e))}function hE(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Ae===e&&(le&n)===n&&(Ve===4||Ve===3&&(le&62914560)===le&&300>Ft()-$u?(ce&2)===0&&Kl(e,0):Hp|=n,Yl===le&&(Yl=0)),Gn(e)}function d0(e,t){t===0&&(t=ab()),e=Hi(e,t),e!==null&&(xs(e,t),Gn(e))}function mE(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),d0(e,n)}function gE(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(w(314))}a!==null&&a.delete(t),d0(e,n)}function yE(e,t){return ep(e,t)}var wu=null,gl=null,Vd=!1,Nu=!1,Pf=!1,Xa=0;function Gn(e){e!==gl&&e.next===null&&(gl===null?wu=gl=e:gl=gl.next=e),Nu=!0,Vd||(Vd=!0,vE())}function Rs(e,t){if(!Pf&&Nu){Pf=!0;do for(var n=!1,a=wu;a!==null;){if(!t)if(e!==0){var i=a.pendingLanes;if(i===0)var l=0;else{var r=a.suspendedLanes,s=a.pingedLanes;l=(1<<31-It(42|e)+1)-1,l&=i&~(r&~s),l=l&201326741?l&201326741|1:l?l|2:0}l!==0&&(n=!0,xy(a,l))}else l=le,l=Lu(a,a===Ae?l:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(l&3)===0||Ts(a,l)||(n=!0,xy(a,l));a=a.next}while(n);Pf=!1}}function bE(){p0()}function p0(){Nu=Vd=!1;var e=0;Xa!==0&&NE()&&(e=Xa);for(var t=Ft(),n=null,a=wu;a!==null;){var i=a.next,l=h0(a,t);l===0?(a.next=null,n===null?wu=i:n.next=i,i===null&&(gl=n)):(n=a,(e!==0||(l&3)!==0)&&(Nu=!0)),a=i}tt!==0&&tt!==5||Rs(e,!1),Xa!==0&&(Xa=0)}function h0(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,i=e.expirationTimes,l=e.pendingLanes&-62914561;0<l;){var r=31-It(l),s=1<<r,o=i[r];o===-1?((s&n)===0||(s&a)!==0)&&(i[r]=Xx(s,t)):o<=t&&(e.expiredLanes|=s),l&=~s}if(t=Ae,n=le,n=Lu(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a=e.callbackNode,n===0||e===t&&(ve===2||ve===9)||e.cancelPendingCommit!==null)return a!==null&&a!==null&&Nf(a),e.callbackNode=null,e.callbackPriority=0;if((n&3)===0||Ts(e,n)){if(t=n&-n,t===e.callbackPriority)return t;switch(a!==null&&Nf(a),np(n)){case 2:case 8:n=tb;break;case 32:n=uu;break;case 268435456:n=nb;break;default:n=uu}return a=m0.bind(null,e),n=ep(n,a),e.callbackPriority=t,e.callbackNode=n,t}return a!==null&&a!==null&&Nf(a),e.callbackPriority=2,e.callbackNode=null,2}function m0(e,t){if(tt!==0&&tt!==5)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(Fu()&&e.callbackNode!==n)return null;var a=le;return a=Lu(e,e===Ae?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),a===0?null:(e0(e,a,t),h0(e,Ft()),e.callbackNode!=null&&e.callbackNode===n?m0.bind(null,e):null)}function xy(e,t){if(Fu())return null;e0(e,t,!0)}function vE(){OE(function(){(ce&6)!==0?ep(eb,bE):p0()})}function jp(){if(Xa===0){var e=ql;e===0&&(e=Ro,Ro<<=1,(Ro&261888)===0&&(Ro=256)),Xa=e}return Xa}function ky(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:$o(""+e)}function Ey(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function SE(e,t,n,a,i){if(t==="submit"&&n&&n.stateNode===i){var l=ky((i[Ht]||null).action),r=a.submitter;r&&(t=(t=r[Ht]||null)?ky(t.formAction):r.getAttribute("formAction"),t!==null&&(l=t,r=null));var s=new Uu("action","action",null,a,i);e.push({event:s,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(Xa!==0){var o=r?Ey(i,r):new FormData(i);_d(n,{pending:!0,data:o,method:i.method,action:l},null,o)}}else typeof l=="function"&&(s.preventDefault(),o=r?Ey(i,r):new FormData(i),_d(n,{pending:!0,data:o,method:i.method,action:l},l,o))},currentTarget:i}]})}}for(jo=0;jo<vd.length;jo++)Vo=vd[jo],Ay=Vo.toLowerCase(),wy=Vo[0].toUpperCase()+Vo.slice(1),Nn(Ay,"on"+wy);var Vo,Ay,wy,jo;Nn(Nb,"onAnimationEnd");Nn(Rb,"onAnimationIteration");Nn(Ob,"onAnimationStart");Nn("dblclick","onDoubleClick");Nn("focusin","onFocus");Nn("focusout","onBlur");Nn(Hk,"onTransitionRun");Nn(qk,"onTransitionStart");Nn(jk,"onTransitionCancel");Nn(Cb,"onTransitionEnd");Bl("onMouseEnter",["mouseout","mouseover"]);Bl("onMouseLeave",["mouseout","mouseover"]);Bl("onPointerEnter",["pointerout","pointerover"]);Bl("onPointerLeave",["pointerout","pointerover"]);Li("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Li("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Li("onBeforeInput",["compositionend","keypress","textInput","paste"]);Li("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Li("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Li("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var hs="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),TE=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(hs));function g0(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n],i=a.event;a=a.listeners;e:{var l=void 0;if(t)for(var r=a.length-1;0<=r;r--){var s=a[r],o=s.instance,u=s.currentTarget;if(s=s.listener,o!==l&&i.isPropagationStopped())break e;l=s,i.currentTarget=u;try{l(i)}catch(c){fu(c)}i.currentTarget=null,l=o}else for(r=0;r<a.length;r++){if(s=a[r],o=s.instance,u=s.currentTarget,s=s.listener,o!==l&&i.isPropagationStopped())break e;l=s,i.currentTarget=u;try{l(i)}catch(c){fu(c)}i.currentTarget=null,l=o}}}}function ne(e,t){var n=t[fd];n===void 0&&(n=t[fd]=new Set);var a=e+"__bubble";n.has(a)||(y0(t,e,2,!1),n.add(a))}function Wf(e,t,n){var a=0;t&&(a|=4),y0(n,e,a,t)}var Yo="_reactListening"+Math.random().toString(36).slice(2);function Vp(e){if(!e[Yo]){e[Yo]=!0,ob.forEach(function(n){n!=="selectionchange"&&(TE.has(n)||Wf(n,!1,e),Wf(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Yo]||(t[Yo]=!0,Wf("selectionchange",!1,t))}}function y0(e,t,n,a){switch(C0(t)){case 2:var i=FE;break;case 8:i=JE;break;default:i=Xp}n=i.bind(null,t,n,e),i=void 0,!gd||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(i=!0),a?i!==void 0?e.addEventListener(t,n,{capture:!0,passive:i}):e.addEventListener(t,n,!0):i!==void 0?e.addEventListener(t,n,{passive:i}):e.addEventListener(t,n,!1)}function ed(e,t,n,a,i){var l=a;if((t&1)===0&&(t&2)===0&&a!==null)e:for(;;){if(a===null)return;var r=a.tag;if(r===3||r===4){var s=a.stateNode.containerInfo;if(s===i)break;if(r===4)for(r=a.return;r!==null;){var o=r.tag;if((o===3||o===4)&&r.stateNode.containerInfo===i)return;r=r.return}for(;s!==null;){if(r=vl(s),r===null)return;if(o=r.tag,o===5||o===6||o===26||o===27){a=l=r;continue e}s=s.parentNode}}a=a.return}gb(function(){var u=l,c=lp(n),f=[];e:{var d=_b.get(e);if(d!==void 0){var h=Uu,v=e;switch(e){case"keypress":if(Zo(n)===0)break e;case"keydown":case"keyup":h=gk;break;case"focusin":v="focus",h=Df;break;case"focusout":v="blur",h=Df;break;case"beforeblur":case"afterblur":h=Df;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":h=Mg;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":h=ik;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":h=vk;break;case Nb:case Rb:case Ob:h=sk;break;case Cb:h=Tk;break;case"scroll":case"scrollend":h=nk;break;case"wheel":h=kk;break;case"copy":case"cut":case"paste":h=uk;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":h=Lg;break;case"toggle":case"beforetoggle":h=Ak}var g=(t&4)!==0,k=!g&&(e==="scroll"||e==="scrollend"),m=g?d!==null?d+"Capture":null:d;g=[];for(var p=u,b;p!==null;){var S=p;if(b=S.stateNode,S=S.tag,S!==5&&S!==26&&S!==27||b===null||m===null||(S=rs(p,m),S!=null&&g.push(ms(p,S,b))),k)break;p=p.return}0<g.length&&(d=new h(d,v,null,n,c),f.push({event:d,listeners:g}))}}if((t&7)===0){e:{if(d=e==="mouseover"||e==="pointerover",h=e==="mouseout"||e==="pointerout",d&&n!==md&&(v=n.relatedTarget||n.fromElement)&&(vl(v)||v[Ql]))break e;if((h||d)&&(d=c.window===c?c:(d=c.ownerDocument)?d.defaultView||d.parentWindow:window,h?(v=n.relatedTarget||n.toElement,h=u,v=v?vl(v):null,v!==null&&(k=vs(v),g=v.tag,v!==k||g!==5&&g!==27&&g!==6)&&(v=null)):(h=null,v=u),h!==v)){if(g=Mg,S="onMouseLeave",m="onMouseEnter",p="mouse",(e==="pointerout"||e==="pointerover")&&(g=Lg,S="onPointerLeave",m="onPointerEnter",p="pointer"),k=h==null?d:Gr(h),b=v==null?d:Gr(v),d=new g(S,p+"leave",h,n,c),d.target=k,d.relatedTarget=b,S=null,vl(c)===u&&(g=new g(m,p+"enter",v,n,c),g.target=b,g.relatedTarget=k,S=g),k=S,h&&v)t:{for(g=xE,m=h,p=v,b=0,S=m;S;S=g(S))b++;S=0;for(var x=p;x;x=g(x))S++;for(;0<b-S;)m=g(m),b--;for(;0<S-b;)p=g(p),S--;for(;b--;){if(m===p||p!==null&&m===p.alternate){g=m;break t}m=g(m),p=g(p)}g=null}else g=null;h!==null&&Ny(f,d,h,g,!1),v!==null&&k!==null&&Ny(f,k,v,g,!0)}}e:{if(d=u?Gr(u):window,h=d.nodeName&&d.nodeName.toLowerCase(),h==="select"||h==="input"&&d.type==="file")var R=qg;else if(Hg(d))if(xb)R=Lk;else{R=Mk;var N=Dk}else h=d.nodeName,!h||h.toLowerCase()!=="input"||d.type!=="checkbox"&&d.type!=="radio"?u&&ip(u.elementType)&&(R=qg):R=zk;if(R&&(R=R(e,u))){Tb(f,R,n,c);break e}N&&N(e,d,u),e==="focusout"&&u&&d.type==="number"&&u.memoizedProps.value!=null&&hd(d,"number",d.value)}switch(N=u?Gr(u):window,e){case"focusin":(Hg(N)||N.contentEditable==="true")&&(xl=N,yd=u,Zr=null);break;case"focusout":Zr=yd=xl=null;break;case"mousedown":bd=!0;break;case"contextmenu":case"mouseup":case"dragend":bd=!1,Gg(f,n,c);break;case"selectionchange":if(Bk)break;case"keydown":case"keyup":Gg(f,n,c)}var D;if(op)e:{switch(e){case"compositionstart":var M="onCompositionStart";break e;case"compositionend":M="onCompositionEnd";break e;case"compositionupdate":M="onCompositionUpdate";break e}M=void 0}else Tl?vb(e,n)&&(M="onCompositionEnd"):e==="keydown"&&n.keyCode===229&&(M="onCompositionStart");M&&(bb&&n.locale!=="ko"&&(Tl||M!=="onCompositionStart"?M==="onCompositionEnd"&&Tl&&(D=yb()):(Ya=c,rp="value"in Ya?Ya.value:Ya.textContent,Tl=!0)),N=Ru(u,M),0<N.length&&(M=new zg(M,e,null,n,c),f.push({event:M,listeners:N}),D?M.data=D:(D=Sb(n),D!==null&&(M.data=D)))),(D=Nk?Rk(e,n):Ok(e,n))&&(M=Ru(u,"onBeforeInput"),0<M.length&&(N=new zg("onBeforeInput","beforeinput",null,n,c),f.push({event:N,listeners:M}),N.data=D)),SE(f,e,u,n,c)}g0(f,t)})}function ms(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Ru(e,t){for(var n=t+"Capture",a=[];e!==null;){var i=e,l=i.stateNode;if(i=i.tag,i!==5&&i!==26&&i!==27||l===null||(i=rs(e,n),i!=null&&a.unshift(ms(e,i,l)),i=rs(e,t),i!=null&&a.push(ms(e,i,l))),e.tag===3)return a;e=e.return}return[]}function xE(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Ny(e,t,n,a,i){for(var l=t._reactName,r=[];n!==null&&n!==a;){var s=n,o=s.alternate,u=s.stateNode;if(s=s.tag,o!==null&&o===a)break;s!==5&&s!==26&&s!==27||u===null||(o=u,i?(u=rs(n,l),u!=null&&r.unshift(ms(n,u,o))):i||(u=rs(n,l),u!=null&&r.push(ms(n,u,o)))),n=n.return}r.length!==0&&e.push({event:t,listeners:r})}var kE=/\r\n?/g,EE=/\u0000|\uFFFD/g;function Ry(e){return(typeof e=="string"?e:""+e).replace(kE,"\n").replace(EE,"")}function b0(e,t){return t=Ry(t),Ry(e)===t}function xe(e,t,n,a,i,l){switch(n){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||Hl(e,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&Hl(e,""+a);break;case"className":_o(e,"class",a);break;case"tabIndex":_o(e,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":_o(e,n,a);break;case"style":mb(e,a,l);break;case"data":if(t!=="object"){_o(e,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||n!=="href")){e.removeAttribute(n);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=$o(""+a),e.setAttribute(n,a);break;case"action":case"formAction":if(typeof a=="function"){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof l=="function"&&(n==="formAction"?(t!=="input"&&xe(e,t,"name",i.name,i,null),xe(e,t,"formEncType",i.formEncType,i,null),xe(e,t,"formMethod",i.formMethod,i,null),xe(e,t,"formTarget",i.formTarget,i,null)):(xe(e,t,"encType",i.encType,i,null),xe(e,t,"method",i.method,i,null),xe(e,t,"target",i.target,i,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}a=$o(""+a),e.setAttribute(n,a);break;case"onClick":a!=null&&(e.onclick=ga);break;case"onScroll":a!=null&&ne("scroll",e);break;case"onScrollEnd":a!=null&&ne("scrollend",e);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(w(61));if(n=a.__html,n!=null){if(i.children!=null)throw Error(w(60));e.innerHTML=n}}break;case"multiple":e.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":e.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){e.removeAttribute("xlink:href");break}n=$o(""+a),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""+a):e.removeAttribute(n);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":a===!0?e.setAttribute(n,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,a):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?e.setAttribute(n,a):e.removeAttribute(n);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?e.removeAttribute(n):e.setAttribute(n,a);break;case"popover":ne("beforetoggle",e),ne("toggle",e),Xo(e,"popover",a);break;case"xlinkActuate":oa(e,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":oa(e,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":oa(e,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":oa(e,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":oa(e,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":oa(e,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":oa(e,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":oa(e,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":oa(e,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":Xo(e,"is",a);break;case"innerText":case"textContent":break;default:(!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")&&(n=ek.get(n)||n,Xo(e,n,a))}}function Yd(e,t,n,a,i,l){switch(n){case"style":mb(e,a,l);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(w(61));if(n=a.__html,n!=null){if(i.children!=null)throw Error(w(60));e.innerHTML=n}}break;case"children":typeof a=="string"?Hl(e,a):(typeof a=="number"||typeof a=="bigint")&&Hl(e,""+a);break;case"onScroll":a!=null&&ne("scroll",e);break;case"onScrollEnd":a!=null&&ne("scrollend",e);break;case"onClick":a!=null&&(e.onclick=ga);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!ub.hasOwnProperty(n))e:{if(n[0]==="o"&&n[1]==="n"&&(i=n.endsWith("Capture"),t=n.slice(2,i?n.length-7:void 0),l=e[Ht]||null,l=l!=null?l[n]:null,typeof l=="function"&&e.removeEventListener(t,l,i),typeof a=="function")){typeof l!="function"&&l!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,a,i);break e}n in e?e[n]=a:a===!0?e.setAttribute(n,""):Xo(e,n,a)}}}function gt(e,t,n){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":ne("error",e),ne("load",e);var a=!1,i=!1,l;for(l in n)if(n.hasOwnProperty(l)){var r=n[l];if(r!=null)switch(l){case"src":a=!0;break;case"srcSet":i=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(w(137,t));default:xe(e,t,l,r,n,null)}}i&&xe(e,t,"srcSet",n.srcSet,n,null),a&&xe(e,t,"src",n.src,n,null);return;case"input":ne("invalid",e);var s=l=r=i=null,o=null,u=null;for(a in n)if(n.hasOwnProperty(a)){var c=n[a];if(c!=null)switch(a){case"name":i=c;break;case"type":r=c;break;case"checked":o=c;break;case"defaultChecked":u=c;break;case"value":l=c;break;case"defaultValue":s=c;break;case"children":case"dangerouslySetInnerHTML":if(c!=null)throw Error(w(137,t));break;default:xe(e,t,a,c,n,null)}}db(e,l,s,o,u,r,i,!1);return;case"select":ne("invalid",e),a=r=l=null;for(i in n)if(n.hasOwnProperty(i)&&(s=n[i],s!=null))switch(i){case"value":l=s;break;case"defaultValue":r=s;break;case"multiple":a=s;default:xe(e,t,i,s,n,null)}t=l,n=r,e.multiple=!!a,t!=null?Cl(e,!!a,t,!1):n!=null&&Cl(e,!!a,n,!0);return;case"textarea":ne("invalid",e),l=i=a=null;for(r in n)if(n.hasOwnProperty(r)&&(s=n[r],s!=null))switch(r){case"value":a=s;break;case"defaultValue":i=s;break;case"children":l=s;break;case"dangerouslySetInnerHTML":if(s!=null)throw Error(w(91));break;default:xe(e,t,r,s,n,null)}hb(e,a,i,l);return;case"option":for(o in n)n.hasOwnProperty(o)&&(a=n[o],a!=null)&&(o==="selected"?e.selected=a&&typeof a!="function"&&typeof a!="symbol":xe(e,t,o,a,n,null));return;case"dialog":ne("beforetoggle",e),ne("toggle",e),ne("cancel",e),ne("close",e);break;case"iframe":case"object":ne("load",e);break;case"video":case"audio":for(a=0;a<hs.length;a++)ne(hs[a],e);break;case"image":ne("error",e),ne("load",e);break;case"details":ne("toggle",e);break;case"embed":case"source":case"link":ne("error",e),ne("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(u in n)if(n.hasOwnProperty(u)&&(a=n[u],a!=null))switch(u){case"children":case"dangerouslySetInnerHTML":throw Error(w(137,t));default:xe(e,t,u,a,n,null)}return;default:if(ip(t)){for(c in n)n.hasOwnProperty(c)&&(a=n[c],a!==void 0&&Yd(e,t,c,a,n,void 0));return}}for(s in n)n.hasOwnProperty(s)&&(a=n[s],a!=null&&xe(e,t,s,a,n,null))}function AE(e,t,n,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var i=null,l=null,r=null,s=null,o=null,u=null,c=null;for(h in n){var f=n[h];if(n.hasOwnProperty(h)&&f!=null)switch(h){case"checked":break;case"value":break;case"defaultValue":o=f;default:a.hasOwnProperty(h)||xe(e,t,h,null,a,f)}}for(var d in a){var h=a[d];if(f=n[d],a.hasOwnProperty(d)&&(h!=null||f!=null))switch(d){case"type":l=h;break;case"name":i=h;break;case"checked":u=h;break;case"defaultChecked":c=h;break;case"value":r=h;break;case"defaultValue":s=h;break;case"children":case"dangerouslySetInnerHTML":if(h!=null)throw Error(w(137,t));break;default:h!==f&&xe(e,t,d,h,a,f)}}pd(e,r,s,o,u,c,l,i);return;case"select":h=r=s=d=null;for(l in n)if(o=n[l],n.hasOwnProperty(l)&&o!=null)switch(l){case"value":break;case"multiple":h=o;default:a.hasOwnProperty(l)||xe(e,t,l,null,a,o)}for(i in a)if(l=a[i],o=n[i],a.hasOwnProperty(i)&&(l!=null||o!=null))switch(i){case"value":d=l;break;case"defaultValue":s=l;break;case"multiple":r=l;default:l!==o&&xe(e,t,i,l,a,o)}t=s,n=r,a=h,d!=null?Cl(e,!!n,d,!1):!!a!=!!n&&(t!=null?Cl(e,!!n,t,!0):Cl(e,!!n,n?[]:"",!1));return;case"textarea":h=d=null;for(s in n)if(i=n[s],n.hasOwnProperty(s)&&i!=null&&!a.hasOwnProperty(s))switch(s){case"value":break;case"children":break;default:xe(e,t,s,null,a,i)}for(r in a)if(i=a[r],l=n[r],a.hasOwnProperty(r)&&(i!=null||l!=null))switch(r){case"value":d=i;break;case"defaultValue":h=i;break;case"children":break;case"dangerouslySetInnerHTML":if(i!=null)throw Error(w(91));break;default:i!==l&&xe(e,t,r,i,a,l)}pb(e,d,h);return;case"option":for(var v in n)d=n[v],n.hasOwnProperty(v)&&d!=null&&!a.hasOwnProperty(v)&&(v==="selected"?e.selected=!1:xe(e,t,v,null,a,d));for(o in a)d=a[o],h=n[o],a.hasOwnProperty(o)&&d!==h&&(d!=null||h!=null)&&(o==="selected"?e.selected=d&&typeof d!="function"&&typeof d!="symbol":xe(e,t,o,d,a,h));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)d=n[g],n.hasOwnProperty(g)&&d!=null&&!a.hasOwnProperty(g)&&xe(e,t,g,null,a,d);for(u in a)if(d=a[u],h=n[u],a.hasOwnProperty(u)&&d!==h&&(d!=null||h!=null))switch(u){case"children":case"dangerouslySetInnerHTML":if(d!=null)throw Error(w(137,t));break;default:xe(e,t,u,d,a,h)}return;default:if(ip(t)){for(var k in n)d=n[k],n.hasOwnProperty(k)&&d!==void 0&&!a.hasOwnProperty(k)&&Yd(e,t,k,void 0,a,d);for(c in a)d=a[c],h=n[c],!a.hasOwnProperty(c)||d===h||d===void 0&&h===void 0||Yd(e,t,c,d,a,h);return}}for(var m in n)d=n[m],n.hasOwnProperty(m)&&d!=null&&!a.hasOwnProperty(m)&&xe(e,t,m,null,a,d);for(f in a)d=a[f],h=n[f],!a.hasOwnProperty(f)||d===h||d==null&&h==null||xe(e,t,f,d,a,h)}function Oy(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function wE(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,n=performance.getEntriesByType("resource"),a=0;a<n.length;a++){var i=n[a],l=i.transferSize,r=i.initiatorType,s=i.duration;if(l&&s&&Oy(r)){for(r=0,s=i.responseEnd,a+=1;a<n.length;a++){var o=n[a],u=o.startTime;if(u>s)break;var c=o.transferSize,f=o.initiatorType;c&&Oy(f)&&(o=o.responseEnd,r+=c*(o<s?1:(s-u)/(o-u)))}if(--a,t+=8*(l+r)/(i.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var Gd=null,Kd=null;function Ou(e){return e.nodeType===9?e:e.ownerDocument}function Cy(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function v0(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function Xd(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var td=null;function NE(){var e=window.event;return e&&e.type==="popstate"?e===td?!1:(td=e,!0):(td=null,!1)}var S0=typeof setTimeout=="function"?setTimeout:void 0,RE=typeof clearTimeout=="function"?clearTimeout:void 0,_y=typeof Promise=="function"?Promise:void 0,OE=typeof queueMicrotask=="function"?queueMicrotask:typeof _y<"u"?function(e){return _y.resolve(null).then(e).catch(CE)}:S0;function CE(e){setTimeout(function(){throw e})}function ri(e){return e==="head"}function Dy(e,t){var n=t,a=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8)if(n=i.data,n==="/$"||n==="/&"){if(a===0){e.removeChild(i),$l(t);return}a--}else if(n==="$"||n==="$?"||n==="$~"||n==="$!"||n==="&")a++;else if(n==="html")is(e.ownerDocument.documentElement);else if(n==="head"){n=e.ownerDocument.head,is(n);for(var l=n.firstChild;l;){var r=l.nextSibling,s=l.nodeName;l[ks]||s==="SCRIPT"||s==="STYLE"||s==="LINK"&&l.rel.toLowerCase()==="stylesheet"||n.removeChild(l),l=r}}else n==="body"&&is(e.ownerDocument.body);n=i}while(n);$l(t)}function My(e,t){var n=e;e=0;do{var a=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",n.getAttribute("style")===""&&n.removeAttribute("style")):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),a&&a.nodeType===8)if(n=a.data,n==="/$"){if(e===0)break;e--}else n!=="$"&&n!=="$?"&&n!=="$~"&&n!=="$!"||e++;n=a}while(n)}function $d(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":$d(n),ap(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(n.rel.toLowerCase()==="stylesheet")continue}e.removeChild(n)}}function _E(e,t,n,a){for(;e.nodeType===1;){var i=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(a){if(!e[ks])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(l=e.getAttribute("rel"),l==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(l!==i.rel||e.getAttribute("href")!==(i.href==null||i.href===""?null:i.href)||e.getAttribute("crossorigin")!==(i.crossOrigin==null?null:i.crossOrigin)||e.getAttribute("title")!==(i.title==null?null:i.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(l=e.getAttribute("src"),(l!==(i.src==null?null:i.src)||e.getAttribute("type")!==(i.type==null?null:i.type)||e.getAttribute("crossorigin")!==(i.crossOrigin==null?null:i.crossOrigin))&&l&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var l=i.name==null?null:""+i.name;if(i.type==="hidden"&&e.getAttribute("name")===l)return e}else return e;if(e=mn(e.nextSibling),e===null)break}return null}function DE(e,t,n){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=mn(e.nextSibling),e===null))return null;return e}function T0(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=mn(e.nextSibling),e===null))return null;return e}function Qd(e){return e.data==="$?"||e.data==="$~"}function Zd(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function ME(e,t){var n=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||n.readyState!=="loading")t();else{var a=function(){t(),n.removeEventListener("DOMContentLoaded",a)};n.addEventListener("DOMContentLoaded",a),e._reactRetry=a}}function mn(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var Fd=null;function zy(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"||n==="/&"){if(t===0)return mn(e.nextSibling);t--}else n!=="$"&&n!=="$!"&&n!=="$?"&&n!=="$~"&&n!=="&"||t++}e=e.nextSibling}return null}function Ly(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"){if(t===0)return e;t--}else n!=="/$"&&n!=="/&"||t++}e=e.previousSibling}return null}function x0(e,t,n){switch(t=Ou(n),e){case"html":if(e=t.documentElement,!e)throw Error(w(452));return e;case"head":if(e=t.head,!e)throw Error(w(453));return e;case"body":if(e=t.body,!e)throw Error(w(454));return e;default:throw Error(w(451))}}function is(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);ap(e)}var gn=new Map,Uy=new Set;function Cu(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var wa=fe.d;fe.d={f:zE,r:LE,D:UE,C:BE,L:HE,m:qE,X:VE,S:jE,M:YE};function zE(){var e=wa.f(),t=Qu();return e||t}function LE(e){var t=Zl(e);t!==null&&t.tag===5&&t.type==="form"?mv(t):wa.r(e)}var Pl=typeof document>"u"?null:document;function k0(e,t,n){var a=Pl;if(a&&typeof t=="string"&&t){var i=fn(t);i='link[rel="'+e+'"][href="'+i+'"]',typeof n=="string"&&(i+='[crossorigin="'+n+'"]'),Uy.has(i)||(Uy.add(i),e={rel:e,crossOrigin:n,href:t},a.querySelector(i)===null&&(t=a.createElement("link"),gt(t,"link",e),ot(t),a.head.appendChild(t)))}}function UE(e){wa.D(e),k0("dns-prefetch",e,null)}function BE(e,t){wa.C(e,t),k0("preconnect",e,t)}function HE(e,t,n){wa.L(e,t,n);var a=Pl;if(a&&e&&t){var i='link[rel="preload"][as="'+fn(t)+'"]';t==="image"&&n&&n.imageSrcSet?(i+='[imagesrcset="'+fn(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(i+='[imagesizes="'+fn(n.imageSizes)+'"]')):i+='[href="'+fn(e)+'"]';var l=i;switch(t){case"style":l=Xl(e);break;case"script":l=Wl(e)}gn.has(l)||(e=ze({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),gn.set(l,e),a.querySelector(i)!==null||t==="style"&&a.querySelector(Os(l))||t==="script"&&a.querySelector(Cs(l))||(t=a.createElement("link"),gt(t,"link",e),ot(t),a.head.appendChild(t)))}}function qE(e,t){wa.m(e,t);var n=Pl;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+fn(a)+'"][href="'+fn(e)+'"]',l=i;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":l=Wl(e)}if(!gn.has(l)&&(e=ze({rel:"modulepreload",href:e},t),gn.set(l,e),n.querySelector(i)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(Cs(l)))return}a=n.createElement("link"),gt(a,"link",e),ot(a),n.head.appendChild(a)}}}function jE(e,t,n){wa.S(e,t,n);var a=Pl;if(a&&e){var i=Ol(a).hoistableStyles,l=Xl(e);t=t||"default";var r=i.get(l);if(!r){var s={loading:0,preload:null};if(r=a.querySelector(Os(l)))s.loading=5;else{e=ze({rel:"stylesheet",href:e,"data-precedence":t},n),(n=gn.get(l))&&Yp(e,n);var o=r=a.createElement("link");ot(o),gt(o,"link",e),o._p=new Promise(function(u,c){o.onload=u,o.onerror=c}),o.addEventListener("load",function(){s.loading|=1}),o.addEventListener("error",function(){s.loading|=2}),s.loading|=4,nu(r,t,a)}r={type:"stylesheet",instance:r,count:1,state:s},i.set(l,r)}}}function VE(e,t){wa.X(e,t);var n=Pl;if(n&&e){var a=Ol(n).hoistableScripts,i=Wl(e),l=a.get(i);l||(l=n.querySelector(Cs(i)),l||(e=ze({src:e,async:!0},t),(t=gn.get(i))&&Gp(e,t),l=n.createElement("script"),ot(l),gt(l,"link",e),n.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},a.set(i,l))}}function YE(e,t){wa.M(e,t);var n=Pl;if(n&&e){var a=Ol(n).hoistableScripts,i=Wl(e),l=a.get(i);l||(l=n.querySelector(Cs(i)),l||(e=ze({src:e,async:!0,type:"module"},t),(t=gn.get(i))&&Gp(e,t),l=n.createElement("script"),ot(l),gt(l,"link",e),n.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},a.set(i,l))}}function By(e,t,n,a){var i=(i=$a.current)?Cu(i):null;if(!i)throw Error(w(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=Xl(n.href),n=Ol(i).hoistableStyles,a=n.get(t),a||(a={type:"style",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=Xl(n.href);var l=Ol(i).hoistableStyles,r=l.get(e);if(r||(i=i.ownerDocument||i,r={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},l.set(e,r),(l=i.querySelector(Os(e)))&&!l._p&&(r.instance=l,r.state.loading=5),gn.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},gn.set(e,n),l||GE(i,e,n,r.state))),t&&a===null)throw Error(w(528,""));return r}if(t&&a!==null)throw Error(w(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Wl(n),n=Ol(i).hoistableScripts,a=n.get(t),a||(a={type:"script",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(w(444,e))}}function Xl(e){return'href="'+fn(e)+'"'}function Os(e){return'link[rel="stylesheet"]['+e+"]"}function E0(e){return ze({},e,{"data-precedence":e.precedence,precedence:null})}function GE(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),gt(t,"link",n),ot(t),e.head.appendChild(t))}function Wl(e){return'[src="'+fn(e)+'"]'}function Cs(e){return"script[async]"+e}function Hy(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+fn(n.href)+'"]');if(a)return t.instance=a,ot(a),a;var i=ze({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),ot(a),gt(a,"style",i),nu(a,n.precedence,e),t.instance=a;case"stylesheet":i=Xl(n.href);var l=e.querySelector(Os(i));if(l)return t.state.loading|=4,t.instance=l,ot(l),l;a=E0(n),(i=gn.get(i))&&Yp(a,i),l=(e.ownerDocument||e).createElement("link"),ot(l);var r=l;return r._p=new Promise(function(s,o){r.onload=s,r.onerror=o}),gt(l,"link",a),t.state.loading|=4,nu(l,n.precedence,e),t.instance=l;case"script":return l=Wl(n.src),(i=e.querySelector(Cs(l)))?(t.instance=i,ot(i),i):(a=n,(i=gn.get(l))&&(a=ze({},n),Gp(a,i)),e=e.ownerDocument||e,i=e.createElement("script"),ot(i),gt(i,"link",a),e.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(w(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,nu(a,n.precedence,e));return t.instance}function nu(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=a.length?a[a.length-1]:null,l=i,r=0;r<a.length;r++){var s=a[r];if(s.dataset.precedence===t)l=s;else if(l!==i)break}l?l.parentNode.insertBefore(e,l.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function Yp(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function Gp(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var au=null;function qy(e,t,n){if(au===null){var a=new Map,i=au=new Map;i.set(n,a)}else i=au,a=i.get(n),a||(a=new Map,i.set(n,a));if(a.has(e))return a;for(a.set(e,null),n=n.getElementsByTagName(e),i=0;i<n.length;i++){var l=n[i];if(!(l[ks]||l[pt]||e==="link"&&l.getAttribute("rel")==="stylesheet")&&l.namespaceURI!=="http://www.w3.org/2000/svg"){var r=l.getAttribute(t)||"";r=e+r;var s=a.get(r);s?s.push(l):a.set(r,[l])}}return a}function jy(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t==="title"?e.querySelector("head > title"):null)}function KE(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function A0(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function XE(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var i=Xl(a.href),l=t.querySelector(Os(i));if(l){t=l._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=_u.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=l,ot(l);return}l=t.ownerDocument||t,a=E0(a),(i=gn.get(i))&&Yp(a,i),l=l.createElement("link"),ot(l);var r=l;r._p=new Promise(function(s,o){r.onload=s,r.onerror=o}),gt(l,"link",a),n.instance=l}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=_u.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var nd=0;function $E(e,t){return e.stylesheets&&e.count===0&&iu(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var a=setTimeout(function(){if(e.stylesheets&&iu(e,e.stylesheets),e.unsuspend){var l=e.unsuspend;e.unsuspend=null,l()}},6e4+t);0<e.imgBytes&&nd===0&&(nd=62500*wE());var i=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&iu(e,e.stylesheets),e.unsuspend)){var l=e.unsuspend;e.unsuspend=null,l()}},(e.imgBytes>nd?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(i)}}:null}function _u(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)iu(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Du=null;function iu(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Du=new Map,t.forEach(QE,e),Du=null,_u.call(e))}function QE(e,t){if(!(t.state.loading&4)){var n=Du.get(e);if(n)var a=n.get(null);else{n=new Map,Du.set(e,n);for(var i=e.querySelectorAll("link[data-precedence],style[data-precedence]"),l=0;l<i.length;l++){var r=i[l];(r.nodeName==="LINK"||r.getAttribute("media")!=="not all")&&(n.set(r.dataset.precedence,r),a=r)}a&&n.set(null,a)}i=t.instance,r=i.getAttribute("data-precedence"),l=n.get(r)||a,l===a&&n.set(null,i),n.set(r,i),this.count++,a=_u.bind(this),i.addEventListener("load",a),i.addEventListener("error",a),l?l.parentNode.insertBefore(i,l.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(i,e.firstChild)),t.state.loading|=4}}var gs={$$typeof:ma,Provider:null,Consumer:null,_currentValue:Ai,_currentValue2:Ai,_threadCount:0};function ZE(e,t,n,a,i,l,r,s,o){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Rf(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Rf(0),this.hiddenUpdates=Rf(null),this.identifierPrefix=a,this.onUncaughtError=i,this.onCaughtError=l,this.onRecoverableError=r,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=o,this.incompleteTransitions=new Map}function w0(e,t,n,a,i,l,r,s,o,u,c,f){return e=new ZE(e,t,n,r,o,u,c,f,s),t=1,l===!0&&(t|=24),l=Qt(3,null,null,t),e.current=l,l.stateNode=e,t=mp(),t.refCount++,e.pooledCache=t,t.refCount++,l.memoizedState={element:a,isDehydrated:n,cache:t},bp(l),e}function N0(e){return e?(e=Al,e):Al}function R0(e,t,n,a,i,l){i=N0(i),a.context===null?a.context=i:a.pendingContext=i,a=Za(t),a.payload={element:n},l=l===void 0?null:l,l!==null&&(a.callback=l),n=Fa(e,a,t),n!==null&&(Bt(n,e,t),Jr(n,e,t))}function Vy(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function Kp(e,t){Vy(e,t),(e=e.alternate)&&Vy(e,t)}function O0(e){if(e.tag===13||e.tag===31){var t=Hi(e,67108864);t!==null&&Bt(t,e,67108864),Kp(e,67108864)}}function Yy(e){if(e.tag===13||e.tag===31){var t=Pt();t=tp(t);var n=Hi(e,t);n!==null&&Bt(n,e,t),Kp(e,t)}}var Mu=!0;function FE(e,t,n,a){var i=Z.T;Z.T=null;var l=fe.p;try{fe.p=2,Xp(e,t,n,a)}finally{fe.p=l,Z.T=i}}function JE(e,t,n,a){var i=Z.T;Z.T=null;var l=fe.p;try{fe.p=8,Xp(e,t,n,a)}finally{fe.p=l,Z.T=i}}function Xp(e,t,n,a){if(Mu){var i=Jd(a);if(i===null)ed(e,t,a,zu,n),Gy(e,a);else if(PE(i,e,t,n,a))a.stopPropagation();else if(Gy(e,a),t&4&&-1<IE.indexOf(e)){for(;i!==null;){var l=Zl(i);if(l!==null)switch(l.tag){case 3:if(l=l.stateNode,l.current.memoizedState.isDehydrated){var r=xi(l.pendingLanes);if(r!==0){var s=l;for(s.pendingLanes|=2,s.entangledLanes|=2;r;){var o=1<<31-It(r);s.entanglements[1]|=o,r&=~o}Gn(l),(ce&6)===0&&(ku=Ft()+500,Rs(0,!1))}}break;case 31:case 13:s=Hi(l,2),s!==null&&Bt(s,l,2),Qu(),Kp(l,2)}if(l=Jd(a),l===null&&ed(e,t,a,zu,n),l===i)break;i=l}i!==null&&a.stopPropagation()}else ed(e,t,a,null,n)}}function Jd(e){return e=lp(e),$p(e)}var zu=null;function $p(e){if(zu=null,e=vl(e),e!==null){var t=vs(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=Fy(t),e!==null)return e;e=null}else if(n===31){if(e=Jy(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return zu=e,null}function C0(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Hx()){case eb:return 2;case tb:return 8;case uu:case qx:return 32;case nb:return 268435456;default:return 32}default:return 32}}var Id=!1,Pa=null,Wa=null,ei=null,ys=new Map,bs=new Map,ja=[],IE="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Gy(e,t){switch(e){case"focusin":case"focusout":Pa=null;break;case"dragenter":case"dragleave":Wa=null;break;case"mouseover":case"mouseout":ei=null;break;case"pointerover":case"pointerout":ys.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":bs.delete(t.pointerId)}}function qr(e,t,n,a,i,l){return e===null||e.nativeEvent!==l?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:l,targetContainers:[i]},t!==null&&(t=Zl(t),t!==null&&O0(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function PE(e,t,n,a,i){switch(t){case"focusin":return Pa=qr(Pa,e,t,n,a,i),!0;case"dragenter":return Wa=qr(Wa,e,t,n,a,i),!0;case"mouseover":return ei=qr(ei,e,t,n,a,i),!0;case"pointerover":var l=i.pointerId;return ys.set(l,qr(ys.get(l)||null,e,t,n,a,i)),!0;case"gotpointercapture":return l=i.pointerId,bs.set(l,qr(bs.get(l)||null,e,t,n,a,i)),!0}return!1}function _0(e){var t=vl(e.target);if(t!==null){var n=vs(t);if(n!==null){if(t=n.tag,t===13){if(t=Fy(n),t!==null){e.blockedOn=t,wg(e.priority,function(){Yy(n)});return}}else if(t===31){if(t=Jy(n),t!==null){e.blockedOn=t,wg(e.priority,function(){Yy(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function lu(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=Jd(e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n);md=a,n.target.dispatchEvent(a),md=null}else return t=Zl(n),t!==null&&O0(t),e.blockedOn=n,!1;t.shift()}return!0}function Ky(e,t,n){lu(e)&&n.delete(t)}function WE(){Id=!1,Pa!==null&&lu(Pa)&&(Pa=null),Wa!==null&&lu(Wa)&&(Wa=null),ei!==null&&lu(ei)&&(ei=null),ys.forEach(Ky),bs.forEach(Ky)}function Go(e,t){e.blockedOn===t&&(e.blockedOn=null,Id||(Id=!0,nt.unstable_scheduleCallback(nt.unstable_NormalPriority,WE)))}var Ko=null;function Xy(e){Ko!==e&&(Ko=e,nt.unstable_scheduleCallback(nt.unstable_NormalPriority,function(){Ko===e&&(Ko=null);for(var t=0;t<e.length;t+=3){var n=e[t],a=e[t+1],i=e[t+2];if(typeof a!="function"){if($p(a||n)===null)continue;break}var l=Zl(n);l!==null&&(e.splice(t,3),t-=3,_d(l,{pending:!0,data:i,method:n.method,action:a},a,i))}}))}function $l(e){function t(o){return Go(o,e)}Pa!==null&&Go(Pa,e),Wa!==null&&Go(Wa,e),ei!==null&&Go(ei,e),ys.forEach(t),bs.forEach(t);for(var n=0;n<ja.length;n++){var a=ja[n];a.blockedOn===e&&(a.blockedOn=null)}for(;0<ja.length&&(n=ja[0],n.blockedOn===null);)_0(n),n.blockedOn===null&&ja.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(a=0;a<n.length;a+=3){var i=n[a],l=n[a+1],r=i[Ht]||null;if(typeof l=="function")r||Xy(n);else if(r){var s=null;if(l&&l.hasAttribute("formAction")){if(i=l,r=l[Ht]||null)s=r.formAction;else if($p(i)!==null)continue}else s=r.action;typeof s=="function"?n[a+1]=s:(n.splice(a,3),a-=3),Xy(n)}}}function D0(){function e(l){l.canIntercept&&l.info==="react-transition"&&l.intercept({handler:function(){return new Promise(function(r){return i=r})},focusReset:"manual",scroll:"manual"})}function t(){i!==null&&(i(),i=null),a||setTimeout(n,20)}function n(){if(!a&&!navigation.transition){var l=navigation.currentEntry;l&&l.url!=null&&navigation.navigate(l.url,{state:l.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var a=!1,i=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){a=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),i!==null&&(i(),i=null)}}}function Qp(e){this._internalRoot=e}Ju.prototype.render=Qp.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(w(409));var n=t.current,a=Pt();R0(n,a,e,t,null,null)};Ju.prototype.unmount=Qp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;R0(e.current,2,null,e,null,null),Qu(),t[Ql]=null}};function Ju(e){this._internalRoot=e}Ju.prototype.unstable_scheduleHydration=function(e){if(e){var t=sb();e={blockedOn:null,target:e,priority:t};for(var n=0;n<ja.length&&t!==0&&t<ja[n].priority;n++);ja.splice(n,0,e),n===0&&_0(e)}};var $y=Qy.version;if($y!=="19.2.6")throw Error(w(527,$y,"19.2.6"));fe.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(w(188)):(e=Object.keys(e).join(","),Error(w(268,e)));return e=_x(t),e=e!==null?Iy(e):null,e=e===null?null:e.stateNode,e};var eA={bundleType:0,version:"19.2.6",rendererPackageName:"react-dom",currentDispatcherRef:Z,reconcilerVersion:"19.2.6"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(jr=__REACT_DEVTOOLS_GLOBAL_HOOK__,!jr.isDisabled&&jr.supportsFiber))try{Ss=jr.inject(eA),Jt=jr}catch(e){}var jr;Iu.createRoot=function(e,t){if(!Zy(e))throw Error(w(299));var n=!1,a="",i=kv,l=Ev,r=Av;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(i=t.onUncaughtError),t.onCaughtError!==void 0&&(l=t.onCaughtError),t.onRecoverableError!==void 0&&(r=t.onRecoverableError)),t=w0(e,1,!1,null,null,n,a,null,i,l,r,D0),e[Ql]=t.current,Vp(e),new Qp(t)};Iu.hydrateRoot=function(e,t,n){if(!Zy(e))throw Error(w(299));var a=!1,i="",l=kv,r=Ev,s=Av,o=null;return n!=null&&(n.unstable_strictMode===!0&&(a=!0),n.identifierPrefix!==void 0&&(i=n.identifierPrefix),n.onUncaughtError!==void 0&&(l=n.onUncaughtError),n.onCaughtError!==void 0&&(r=n.onCaughtError),n.onRecoverableError!==void 0&&(s=n.onRecoverableError),n.formState!==void 0&&(o=n.formState)),t=w0(e,1,!0,t,n!=null?n:null,a,i,o,l,r,s,D0),t.context=N0(null),n=t.current,a=Pt(),a=tp(a),i=Za(a),i.callback=null,Fa(n,i,a),n=a,t.current.lanes=n,xs(t,n),Gn(t),e[Ql]=t.current,Vp(e),new Ju(t)};Iu.version="19.2.6"});var U0=Kt((FO,L0)=>{"use strict";function z0(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(z0)}catch(e){console.error(e)}}z0(),L0.exports=M0()});var US=Kt(yc=>{"use strict";var TA=Symbol.for("react.transitional.element"),xA=Symbol.for("react.fragment");function LS(e,t,n){var a=null;if(n!==void 0&&(a=""+n),t.key!==void 0&&(a=""+t.key),"key"in t){n={};for(var i in t)i!=="key"&&(n[i]=t[i])}else n=t;return t=n.ref,{$$typeof:TA,type:e,key:a,ref:t!==void 0?t:null,props:n}}yc.Fragment=xA;yc.jsx=LS;yc.jsxs=LS});var Le=Kt((uC,BS)=>{"use strict";BS.exports=US()});var F=e=>typeof e=="string",Sr=()=>{let e,t,n=new Promise((a,i)=>{e=a,t=i});return n.resolve=e,n.reject=t,n},Jh=e=>e==null?"":String(e),nT=(e,t,n)=>{e.forEach(a=>{t[a]&&(n[a]=t[a])})},aT=/###/g,Ih=e=>e&&e.includes("###")?e.replace(aT,"."):e,Ph=e=>!e||F(e),Tr=(e,t,n)=>{let a=F(t)?t.split("."):t,i=0;for(;i<a.length-1;){if(Ph(e))return{};let l=Ih(a[i]);!e[l]&&n&&(e[l]=new n),Object.prototype.hasOwnProperty.call(e,l)?e=e[l]:e={},++i}return Ph(e)?{}:{obj:e,k:Ih(a[i])}},Wh=(e,t,n)=>{let{obj:a,k:i}=Tr(e,t,Object);if(a!==void 0||t.length===1){a[i]=n;return}let l=t[t.length-1],r=t.slice(0,t.length-1),s=Tr(e,r,Object);for(;s.obj===void 0&&r.length;)l="".concat(r[r.length-1],".").concat(l),r=r.slice(0,r.length-1),s=Tr(e,r,Object),s!=null&&s.obj&&typeof s.obj["".concat(s.k,".").concat(l)]<"u"&&(s.obj=void 0);s.obj["".concat(s.k,".").concat(l)]=n},iT=(e,t,n,a)=>{let{obj:i,k:l}=Tr(e,t,Object);i[l]=i[l]||[],i[l].push(n)},lo=(e,t)=>{let{obj:n,k:a}=Tr(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,a))return n[a]},lT=(e,t,n)=>{let a=lo(e,n);return a!==void 0?a:lo(t,n)},lm=(e,t,n)=>{for(let a in t)a!=="__proto__"&&a!=="constructor"&&(a in e?F(e[a])||e[a]instanceof String||F(t[a])||t[a]instanceof String?n&&(e[a]=t[a]):lm(e[a],t[a],n):e[a]=t[a]);return e},la=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),rT={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},sT=e=>F(e)?e.replace(/[&<>"'\/]/g,t=>rT[t]):e,Kc=class{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){let n=this.regExpMap.get(t);if(n!==void 0)return n;let a=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,a),this.regExpQueue.push(t),a}},oT=[" ",",","?","!",";"],uT=new Kc(20),cT=(e,t,n)=>{t=t||"",n=n||"";let a=oT.filter(r=>!t.includes(r)&&!n.includes(r));if(a.length===0)return!0;let i=uT.getRegExp("(".concat(a.map(r=>r==="?"?"\\?":r).join("|"),")")),l=!i.test(e);if(!l){let r=e.indexOf(n);r>0&&!i.test(e.substring(0,r))&&(l=!0)}return l},Xc=(e,t,n=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let a=t.split(n),i=e;for(let l=0;l<a.length;){if(!i||typeof i!="object")return;let r,s="";for(let o=l;o<a.length;++o)if(o!==l&&(s+=n),s+=a[o],r=i[s],r!==void 0){if(["string","number","boolean"].includes(typeof r)&&o<a.length-1)continue;l+=o-l+1;break}i=r}return i},xr=e=>e==null?void 0:e.replace(/_/g,"-"),fT={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var n,a;(a=(n=console==null?void 0:console[e])==null?void 0:n.apply)==null||a.call(n,console,t)}},$c=class e{constructor(t,n={}){this.init(t,n)}init(t,n={}){this.prefix=n.prefix||"i18next:",this.logger=t||fT,this.options=n,this.debug=n.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,n,a,i){return i&&!this.debug?null:(t=t.map(l=>F(l)?l.replace(/[\r\n\x00-\x1F\x7F]/g," "):l),F(t[0])&&(t[0]="".concat(a).concat(this.prefix," ").concat(t[0])),this.logger[n](t))}create(t){return new e(this.logger,T({prefix:"".concat(this.prefix,":").concat(t,":")},this.options))}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Ln=new $c,nl=class{constructor(){this.observers={}}on(t,n){return t.split(" ").forEach(a=>{this.observers[a]||(this.observers[a]=new Map);let i=this.observers[a].get(n)||0;this.observers[a].set(n,i+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}once(t,n){let a=(...i)=>{n(...i),this.off(t,a)};return this.on(t,a),this}emit(t,...n){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([i,l])=>{for(let r=0;r<l;r++)i(...n)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([i,l])=>{for(let r=0;r<l;r++)i(t,...n)})}},ro=class extends nl{constructor(t,n={ns:["translation"],defaultNS:"translation"}){super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.includes(t)||this.options.ns.push(t)}removeNamespaces(t){let n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,a,i={}){var u,c;let l=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,r=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure,s;t.includes(".")?s=t.split("."):(s=[t,n],a&&(Array.isArray(a)?s.push(...a):F(a)&&l?s.push(...a.split(l)):s.push(a)));let o=lo(this.data,s);return!o&&!n&&!a&&t.includes(".")&&(t=s[0],n=s[1],a=s.slice(2).join(".")),o||!r||!F(a)?o:Xc((c=(u=this.data)==null?void 0:u[t])==null?void 0:c[n],a,l)}addResource(t,n,a,i,l={silent:!1}){let r=l.keySeparator!==void 0?l.keySeparator:this.options.keySeparator,s=[t,n];a&&(s=s.concat(r?a.split(r):a)),t.includes(".")&&(s=t.split("."),i=n,n=s[1]),this.addNamespaces(n),Wh(this.data,s,i),l.silent||this.emit("added",t,n,a,i)}addResources(t,n,a,i={silent:!1}){for(let l in a)(F(a[l])||Array.isArray(a[l]))&&this.addResource(t,n,l,a[l],{silent:!0});i.silent||this.emit("added",t,n,a)}addResourceBundle(t,n,a,i,l,r={silent:!1,skipCopy:!1}){let s=[t,n];t.includes(".")&&(s=t.split("."),i=a,a=n,n=s[1]),this.addNamespaces(n);let o=lo(this.data,s)||{};r.skipCopy||(a=JSON.parse(JSON.stringify(a))),i?lm(o,a,l):o=T(T({},o),a),Wh(this.data,s,o),r.silent||this.emit("added",t,n,a)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){let n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}},rm={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,a,i){return e.forEach(l=>{var r,s;t=(s=(r=this.processors[l])==null?void 0:r.process(t,n,a,i))!=null?s:t}),t}},sm=Symbol("i18next/PATH_KEY");function dT(){let e=[],t=Object.create(null),n;return t.get=(a,i)=>{var l;return(l=n==null?void 0:n.revoke)==null||l.call(n),i===sm?e:(e.push(i),n=Proxy.revocable(a,t),n.proxy)},Proxy.revocable(Object.create(null),t).proxy}function gi(e,t){var r,s;let{[sm]:n}=e(dT()),a=(r=t==null?void 0:t.keySeparator)!=null?r:".",i=(s=t==null?void 0:t.nsSeparator)!=null?s:":",l=(t==null?void 0:t.enableSelector)==="strict";if(n.length>1&&i){let o=t==null?void 0:t.ns,u=l?Array.isArray(o)?o:o?[o]:null:Array.isArray(o)?o:null;if(u&&(l?u:u.length>1?u.slice(1):[]).includes(n[0]))return"".concat(n[0]).concat(i).concat(n.slice(1).join(a))}return n.join(a)}var Vc=e=>!F(e)&&typeof e!="boolean"&&typeof e!="number",so=class e extends nl{constructor(t,n={}){super(),nT(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Ln.create("translator"),this.checkedLoadedFor={}}changeLanguage(t){t&&(this.language=t)}exists(t,n={interpolation:{}}){let a=T({},n);if(t==null)return!1;let i=this.resolve(t,a);if((i==null?void 0:i.res)===void 0)return!1;let l=Vc(i.res);return!(a.returnObjects===!1&&l)}extractFromKey(t,n){let a=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;a===void 0&&(a=":");let i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,l=n.ns||this.options.defaultNS||[],r=a&&t.includes(a),s=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!cT(t,a,i);if(r&&!s){let o=t.match(this.interpolator.nestingRegexp);if(o&&o.length>0)return{key:t,namespaces:F(l)?[l]:l};let u=t.split(a);(a!==i||a===i&&this.options.ns.includes(u[0]))&&(l=u.shift()),t=u.join(i)}return{key:t,namespaces:F(l)?[l]:l}}translate(t,n,a){let i=typeof n=="object"?T({},n):n;if(typeof i!="object"&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i=="object"&&(i=T({},i)),i||(i={}),t==null)return"";typeof t=="function"&&(t=gi(t,T(T({},this.options),i))),Array.isArray(t)||(t=[String(t)]),t=t.map(q=>typeof q=="function"?gi(q,T(T({},this.options),i)):String(q));let l=i.returnDetails!==void 0?i.returnDetails:this.options.returnDetails,r=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,{key:s,namespaces:o}=this.extractFromKey(t[t.length-1],i),u=o[o.length-1],c=i.nsSeparator!==void 0?i.nsSeparator:this.options.nsSeparator;c===void 0&&(c=":");let f=i.lng||this.language,d=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((f==null?void 0:f.toLowerCase())==="cimode")return d?l?{res:"".concat(u).concat(c).concat(s),usedKey:s,exactUsedKey:s,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(i)}:"".concat(u).concat(c).concat(s):l?{res:s,usedKey:s,exactUsedKey:s,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(i)}:s;let h=this.resolve(t,i),v=h==null?void 0:h.res,g=(h==null?void 0:h.usedKey)||s,k=(h==null?void 0:h.exactUsedKey)||s,m=["[object Number]","[object Function]","[object RegExp]"],p=i.joinArrays!==void 0?i.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,S=i.count!==void 0&&!F(i.count),x=e.hasDefaultValue(i),R=S?this.pluralResolver.getSuffix(f,i.count,i):"",N=i.ordinal&&S?this.pluralResolver.getSuffix(f,i.count,{ordinal:!1}):"",D=S&&!i.ordinal&&i.count===0,M=D&&i["defaultValue".concat(this.options.pluralSeparator,"zero")]||i["defaultValue".concat(R)]||i["defaultValue".concat(N)]||i.defaultValue,U=v;b&&!v&&x&&(U=M);let ue=Vc(U),K=Object.prototype.toString.apply(U);if(b&&U&&ue&&!m.includes(K)&&!(F(p)&&Array.isArray(U))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");let q=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,U,L(T({},i),{ns:o})):"key '".concat(s," (").concat(this.language,")' returned an object instead of string.");return l?(h.res=q,h.usedParams=this.getUsedParamsDetails(i),h):q}if(r){let q=Array.isArray(U),O=q?[]:{},X=q?k:g;for(let I in U)if(Object.prototype.hasOwnProperty.call(U,I)){let pe="".concat(X).concat(r).concat(I);x&&!v?O[I]=this.translate(pe,L(T({},i),{defaultValue:Vc(M)?M[I]:void 0,joinArrays:!1,ns:o})):O[I]=this.translate(pe,L(T({},i),{joinArrays:!1,ns:o})),O[I]===pe&&(O[I]=U[I])}v=O}}else if(b&&F(p)&&Array.isArray(v))v=v.join(p),v&&(v=this.extendTranslation(v,t,i,a));else{let q=!1,O=!1;!this.isValidLookup(v)&&x&&(q=!0,v=M),this.isValidLookup(v)||(O=!0,v=s);let I=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&O?void 0:v,pe=x&&M!==v&&this.options.updateMissing;if(O||q||pe){if(this.logger.log(pe?"updateKey":"missingKey",f,u,S&&!pe?"".concat(s).concat(this.pluralResolver.getSuffix(f,i.count,i)):s,pe?M:v),r){let ye=this.resolve(s,L(T({},i),{keySeparator:!1}));ye&&ye.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let Ee=[],it=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo==="fallback"&&it&&it[0])for(let ye=0;ye<it.length;ye++)Ee.push(it[ye]);else this.options.saveMissingTo==="all"?Ee=this.languageUtils.toResolveHierarchy(i.lng||this.language):Ee.push(i.lng||this.language);let he=(ye,et,Ze)=>{var _n;let Te=x&&Ze!==v?Ze:I;this.options.missingKeyHandler?this.options.missingKeyHandler(ye,u,et,Te,pe,i):(_n=this.backendConnector)!=null&&_n.saveMissing&&this.backendConnector.saveMissing(ye,u,et,Te,pe,i),this.emit("missingKey",ye,u,et,v)};this.options.saveMissing&&(this.options.saveMissingPlurals&&S?Ee.forEach(ye=>{let et=this.pluralResolver.getSuffixes(ye,i);D&&i["defaultValue".concat(this.options.pluralSeparator,"zero")]&&!et.includes("".concat(this.options.pluralSeparator,"zero"))&&et.push("".concat(this.options.pluralSeparator,"zero")),et.forEach(Ze=>{he([ye],s+Ze,i["defaultValue".concat(Ze)]||M)})}):he(Ee,s,M))}v=this.extendTranslation(v,t,i,h,a),O&&v===s&&this.options.appendNamespaceToMissingKey&&(v="".concat(u).concat(c).concat(s)),(O||q)&&this.options.parseMissingKeyHandler&&(v=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?"".concat(u).concat(c).concat(s):s,q?v:void 0,i))}return l?(h.res=v,h.usedParams=this.getUsedParamsDetails(i),h):v}extendTranslation(t,n,a,i,l){var o,u;if((o=this.i18nFormat)!=null&&o.parse)t=this.i18nFormat.parse(t,T(T({},this.options.interpolation.defaultVariables),a),a.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!a.skipInterpolation){a.interpolation&&this.interpolator.init(L(T({},a),{interpolation:T(T({},this.options.interpolation),a.interpolation)}));let c=F(t)&&(((u=a==null?void 0:a.interpolation)==null?void 0:u.skipOnVariables)!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables),f;if(c){let h=t.match(this.interpolator.nestingRegexp);f=h&&h.length}let d=a.replace&&!F(a.replace)?a.replace:a;if(this.options.interpolation.defaultVariables&&(d=T(T({},this.options.interpolation.defaultVariables),d)),t=this.interpolator.interpolate(t,d,a.lng||this.language||i.usedLng,a),c){let h=t.match(this.interpolator.nestingRegexp),v=h&&h.length;f<v&&(a.nest=!1)}!a.lng&&i&&i.res&&(a.lng=this.language||i.usedLng),a.nest!==!1&&(t=this.interpolator.nest(t,(...h)=>(l==null?void 0:l[0])===h[0]&&!a.context?(this.logger.warn("It seems you are nesting recursively key: ".concat(h[0]," in key: ").concat(n[0])),null):this.translate(...h,n),a)),a.interpolation&&this.interpolator.reset()}let r=a.postProcess||this.options.postProcess,s=F(r)?[r]:r;return t!=null&&(s!=null&&s.length)&&a.applyPostProcessor!==!1&&(t=rm.handle(s,t,n,this.options&&this.options.postProcessPassResolved?T({i18nResolved:L(T({},i),{usedParams:this.getUsedParamsDetails(a)})},a):a,this)),t}resolve(t,n={}){let a,i,l,r,s;return F(t)&&(t=[t]),Array.isArray(t)&&(t=t.map(o=>typeof o=="function"?gi(o,T(T({},this.options),n)):o)),t.forEach(o=>{if(this.isValidLookup(a))return;let u=this.extractFromKey(o,n),c=u.key;i=c;let f=u.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));let d=n.count!==void 0&&!F(n.count),h=d&&!n.ordinal&&n.count===0,v=n.context!==void 0&&(F(n.context)||typeof n.context=="number")&&n.context!=="",g=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(k=>{var m,p;this.isValidLookup(a)||(s=k,!this.checkedLoadedFor["".concat(g[0],"-").concat(k)]&&((m=this.utils)!=null&&m.hasLoadedNamespace)&&!((p=this.utils)!=null&&p.hasLoadedNamespace(s))&&(this.checkedLoadedFor["".concat(g[0],"-").concat(k)]=!0,this.logger.warn('key "'.concat(i,'" for languages "').concat(g.join(", "),'" won\'t get resolved as namespace "').concat(s,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),g.forEach(b=>{var R;if(this.isValidLookup(a))return;r=b;let S=[c];if((R=this.i18nFormat)!=null&&R.addLookupKeys)this.i18nFormat.addLookupKeys(S,c,b,k,n);else{let N;d&&(N=this.pluralResolver.getSuffix(b,n.count,n));let D="".concat(this.options.pluralSeparator,"zero"),M="".concat(this.options.pluralSeparator,"ordinal").concat(this.options.pluralSeparator);if(d&&(n.ordinal&&N.startsWith(M)&&S.push(c+N.replace(M,this.options.pluralSeparator)),S.push(c+N),h&&S.push(c+D)),v){let U="".concat(c).concat(this.options.contextSeparator||"_").concat(n.context);S.push(U),d&&(n.ordinal&&N.startsWith(M)&&S.push(U+N.replace(M,this.options.pluralSeparator)),S.push(U+N),h&&S.push(U+D))}}let x;for(;x=S.pop();)this.isValidLookup(a)||(l=x,a=this.getResource(b,k,x,n))}))})}),{res:a,usedKey:i,exactUsedKey:l,usedLng:r,usedNS:s}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,a,i={}){var l;return(l=this.i18nFormat)!=null&&l.getResource?this.i18nFormat.getResource(t,n,a,i):this.resourceStore.getResource(t,n,a,i)}getUsedParamsDetails(t={}){let n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],a=t.replace&&!F(t.replace),i=a?t.replace:t;if(a&&typeof t.count<"u"&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i=T(T({},this.options.interpolation.defaultVariables),i)),!a){i=T({},i);for(let l of n)delete i[l]}return i}static hasDefaultValue(t){let n="defaultValue";for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a)&&a.startsWith(n)&&t[a]!==void 0)return!0;return!1}},oo=class{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ln.create("languageUtils")}getScriptPartFromCode(t){if(t=xr(t),!t||!t.includes("-"))return null;let n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=xr(t),!t||!t.includes("-"))return t;let n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(F(t)&&t.includes("-")){let n;try{n=Intl.getCanonicalLocales(t)[0]}catch(a){}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(t)}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(a=>{if(n)return;let i=this.formatLanguageCode(a);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(a=>{if(n)return;let i=this.getScriptPartFromCode(a);if(this.isSupportedCode(i))return n=i;let l=this.getLanguagePartFromCode(a);if(this.isSupportedCode(l))return n=l;n=this.options.supportedLngs.find(r=>r===l?!0:!r.includes("-")&&!l.includes("-")?!1:!!(r.includes("-")&&!l.includes("-")&&r.slice(0,r.indexOf("-"))===l||r.startsWith(l)&&l.length>1))}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),F(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let a=t[n];return a||(a=t[this.getScriptPartFromCode(n)]),a||(a=t[this.formatLanguageCode(n)]),a||(a=t[this.getLanguagePartFromCode(n)]),a||(a=t.default),a||[]}toResolveHierarchy(t,n){let a=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],t),i=[],l=r=>{r&&(this.isSupportedCode(r)?i.push(r):this.logger.warn("rejecting language code not found in supportedLngs: ".concat(r)))};return F(t)&&(t.includes("-")||t.includes("_"))?(this.options.load!=="languageOnly"&&l(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&l(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&l(this.getLanguagePartFromCode(t))):F(t)&&l(this.formatLanguageCode(t)),a.forEach(r=>{i.includes(r)||l(this.formatLanguageCode(r))}),i}},em={zero:0,one:1,two:2,few:3,many:4,other:5},tm={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})},Qc=class{constructor(t,n={}){this.languageUtils=t,this.options=n,this.logger=Ln.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,n={}){let a=xr(t==="dev"?"en":t),i=n.ordinal?"ordinal":"cardinal",l=JSON.stringify({cleanedCode:a,type:i});if(l in this.pluralRulesCache)return this.pluralRulesCache[l];let r;try{r=new Intl.PluralRules(a,{type:i})}catch(s){if(typeof Intl>"u")return this.logger.error("No Intl support, please use an Intl polyfill!"),tm;if(!t.match(/-|_/))return tm;let o=this.languageUtils.getLanguagePartFromCode(t);r=this.getRule(o,n)}return this.pluralRulesCache[l]=r,r}needsPlural(t,n={}){let a=this.getRule(t,n);return a||(a=this.getRule("dev",n)),(a==null?void 0:a.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,n,a={}){return this.getSuffixes(t,a).map(i=>"".concat(n).concat(i))}getSuffixes(t,n={}){let a=this.getRule(t,n);return a||(a=this.getRule("dev",n)),a?a.resolvedOptions().pluralCategories.sort((i,l)=>em[i]-em[l]).map(i=>"".concat(this.options.prepend).concat(n.ordinal?"ordinal".concat(this.options.prepend):"").concat(i)):[]}getSuffix(t,n,a={}){let i=this.getRule(t,a);return i?"".concat(this.options.prepend).concat(a.ordinal?"ordinal".concat(this.options.prepend):"").concat(i.select(n)):(this.logger.warn("no plural rule found for: ".concat(t)),this.getSuffix("dev",n,a))}},nm=(e,t,n,a=".",i=!0)=>{let l=lT(e,t,n);return!l&&i&&F(n)&&(l=Xc(e,n,a),l===void 0&&(l=Xc(t,n,a))),l},Yc=e=>e.replace(/\$/g,"$$$$"),uo=class{constructor(t={}){var n;this.logger=Ln.create("interpolator"),this.options=t,this.format=((n=t==null?void 0:t.interpolation)==null?void 0:n.format)||(a=>a),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});let{escape:n,escapeValue:a,useRawValueToEscape:i,prefix:l,prefixEscaped:r,suffix:s,suffixEscaped:o,formatSeparator:u,unescapeSuffix:c,unescapePrefix:f,nestingPrefix:d,nestingPrefixEscaped:h,nestingSuffix:v,nestingSuffixEscaped:g,nestingOptionsSeparator:k,maxReplaces:m,alwaysFormat:p}=t.interpolation;this.escape=n!==void 0?n:sT,this.escapeValue=a!==void 0?a:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=l?la(l):r||"{{",this.suffix=s?la(s):o||"}}",this.formatSeparator=u||",",this.unescapePrefix=c?"":f?la(f):"-",this.unescapeSuffix=this.unescapePrefix?"":c?la(c):"",this.nestingPrefix=d?la(d):h||la("$t("),this.nestingSuffix=v?la(v):g||la(")"),this.nestingOptionsSeparator=k||",",this.maxReplaces=m||1e3,this.alwaysFormat=p!==void 0?p:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let t=(n,a)=>(n==null?void 0:n.source)===a?(n.lastIndex=0,n):new RegExp(a,"g");this.regexp=t(this.regexp,"".concat(this.prefix,"(.+?)").concat(this.suffix)),this.regexpUnescape=t(this.regexpUnescape,"".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix)),this.nestingRegexp=t(this.nestingRegexp,"".concat(this.nestingPrefix,"((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\))*?)").concat(this.nestingSuffix))}interpolate(t,n,a,i){var h;let l,r,s,o=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=v=>{if(!v.includes(this.formatSeparator)){let p=nm(n,o,v,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(p,void 0,a,L(T(T({},i),n),{interpolationkey:v})):p}let g=v.split(this.formatSeparator),k=g.shift().trim(),m=g.join(this.formatSeparator).trim();return this.format(nm(n,o,k,this.options.keySeparator,this.options.ignoreJSONStructure),m,a,L(T(T({},i),n),{interpolationkey:k}))};this.resetRegExp(),!this.escapeValue&&typeof t=="string"&&/\$t\([^)]*\{[^}]*\{\{/.test(t)&&this.logger.warn("nesting options string contains interpolated variables with escapeValue: false \u2014 if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.");let c=(i==null?void 0:i.missingInterpolationHandler)||this.options.missingInterpolationHandler,f=((h=i==null?void 0:i.interpolation)==null?void 0:h.skipOnVariables)!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:v=>Yc(v)},{regex:this.regexp,safeValue:v=>this.escapeValue?Yc(this.escape(v)):Yc(v)}].forEach(v=>{for(s=0;l=v.regex.exec(t);){let g=l[1].trim();if(r=u(g),r===void 0)if(typeof c=="function"){let m=c(t,l,i);r=F(m)?m:""}else if(i&&Object.prototype.hasOwnProperty.call(i,g))r="";else if(f){r=l[0];continue}else this.logger.warn("missed to pass in variable ".concat(g," for interpolating ").concat(t)),r="";else!F(r)&&!this.useRawValueToEscape&&(r=Jh(r));let k=v.safeValue(r);if(t=t.replace(l[0],k),f?(v.regex.lastIndex+=r.length,v.regex.lastIndex-=l[0].length):v.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),t}nest(t,n,a={}){let i,l,r,s=(o,u)=>{var g,k;let c=this.nestingOptionsSeparator;if(!o.includes(c))return o;let f=o.split(new RegExp("".concat(la(c),"[ ]*{"))),d="{".concat(f[1]);o=f[0],d=this.interpolate(d,r);let h=d.match(/'/g),v=d.match(/"/g);(((g=h==null?void 0:h.length)!=null?g:0)%2===0&&!v||((k=v==null?void 0:v.length)!=null?k:0)%2!==0)&&(d=d.replace(/'/g,'"'));try{r=JSON.parse(d),u&&(r=T(T({},u),r))}catch(m){return this.logger.warn("failed parsing options string in nesting for key ".concat(o),m),"".concat(o).concat(c).concat(d)}return r.defaultValue&&r.defaultValue.includes(this.prefix)&&delete r.defaultValue,o};for(;i=this.nestingRegexp.exec(t);){let o=[];r=T({},a),r=r.replace&&!F(r.replace)?r.replace:r,r.applyPostProcessor=!1,delete r.defaultValue;let u=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(u!==-1&&(o=i[1].slice(u).split(this.formatSeparator).map(c=>c.trim()).filter(Boolean),i[1]=i[1].slice(0,u)),l=n(s.call(this,i[1].trim(),r),r),l&&i[0]===t&&!F(l))return l;F(l)||(l=Jh(l)),l||(this.logger.warn("missed to resolve ".concat(i[1]," for nesting ").concat(t)),l=""),o.length&&(l=o.reduce((c,f)=>this.format(c,f,a.lng,L(T({},a),{interpolationkey:i[1].trim()})),l.trim())),t=t.replace(i[0],l),this.regexp.lastIndex=0}return t}},pT=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes("(")){let a=e.split("(");t=a[0].toLowerCase().trim();let i=a[1].slice(0,-1);t==="currency"&&!i.includes(":")?n.currency||(n.currency=i.trim()):t==="relativetime"&&!i.includes(":")?n.range||(n.range=i.trim()):i.split(";").forEach(r=>{if(r){let[s,...o]=r.split(":"),u=o.join(":").trim().replace(/^'+|'+$/g,""),c=s.trim();n[c]||(n[c]=u),u==="false"&&(n[c]=!1),u==="true"&&(n[c]=!0),isNaN(u)||(n[c]=parseInt(u,10))}})}return{formatName:t,formatOptions:n}},am=e=>{let t={};return(n,a,i)=>{let l=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(l=L(T({},l),{[i.interpolationkey]:void 0}));let r=a+JSON.stringify(l),s=t[r];return s||(s=e(xr(a),i),t[r]=s),s(n)}},hT=e=>(t,n,a)=>e(xr(n),a)(t),Zc=class{constructor(t={}){this.logger=Ln.create("formatter"),this.options=t,this.init(t)}init(t,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";let a=n.cacheInBuiltFormats?am:hT;this.formats={number:a((i,l)=>{let r=new Intl.NumberFormat(i,T({},l));return s=>r.format(s)}),currency:a((i,l)=>{let r=new Intl.NumberFormat(i,L(T({},l),{style:"currency"}));return s=>r.format(s)}),datetime:a((i,l)=>{let r=new Intl.DateTimeFormat(i,T({},l));return s=>r.format(s)}),relativetime:a((i,l)=>{let r=new Intl.RelativeTimeFormat(i,T({},l));return s=>r.format(s,l.range||"day")}),list:a((i,l)=>{let r=new Intl.ListFormat(i,T({},l));return s=>r.format(s)})}}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=am(n)}format(t,n,a,i={}){if(!n||t==null)return t;let l=n.split(this.formatSeparator);if(l.length>1&&l[0].indexOf("(")>1&&!l[0].includes(")")&&l.find(s=>s.includes(")"))){let s=l.findIndex(o=>o.includes(")"));l[0]=[l[0],...l.splice(1,s)].join(this.formatSeparator)}return l.reduce((s,o)=>{var f;let{formatName:u,formatOptions:c}=pT(o);if(this.formats[u]){let d=s;try{let h=((f=i==null?void 0:i.formatParams)==null?void 0:f[i.interpolationkey])||{},v=h.locale||h.lng||i.locale||i.lng||a;d=this.formats[u](s,v,T(T(T({},c),i),h))}catch(h){this.logger.warn(h)}return d}else this.logger.warn("there was no format function for ".concat(u));return s},t)}},mT=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},Fc=class extends nl{constructor(t,n,a,i={}){var l,r;super(),this.backend=t,this.store=n,this.services=a,this.languageUtils=a.languageUtils,this.options=i,this.logger=Ln.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],(r=(l=this.backend)==null?void 0:l.init)==null||r.call(l,a,i.backend,i)}queueLoad(t,n,a,i){let l={},r={},s={},o={};return t.forEach(u=>{let c=!0;n.forEach(f=>{let d="".concat(u,"|").concat(f);!a.reload&&this.store.hasResourceBundle(u,f)?this.state[d]=2:this.state[d]<0||(this.state[d]===1?r[d]===void 0&&(r[d]=!0):(this.state[d]=1,c=!1,r[d]===void 0&&(r[d]=!0),l[d]===void 0&&(l[d]=!0),o[f]===void 0&&(o[f]=!0)))}),c||(s[u]=!0)}),(Object.keys(l).length||Object.keys(r).length)&&this.queue.push({pending:r,pendingCount:Object.keys(r).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(l),pending:Object.keys(r),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(o)}}loaded(t,n,a){let i=t.split("|"),l=i[0],r=i[1];n&&this.emit("failedLoading",l,r,n),!n&&a&&this.store.addResourceBundle(l,r,a,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&a&&(this.state[t]=0);let s={};this.queue.forEach(o=>{iT(o.loaded,[l],r),mT(o,t),n&&o.errors.push(n),o.pendingCount===0&&!o.done&&(Object.keys(o.loaded).forEach(u=>{s[u]||(s[u]={});let c=o.loaded[u];c.length&&c.forEach(f=>{s[u][f]===void 0&&(s[u][f]=!0)})}),o.done=!0,o.errors.length?o.callback(o.errors):o.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(o=>!o.done)}read(t,n,a,i=0,l=this.retryTimeout,r){if(!t.length)return r(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:a,tried:i,wait:l,callback:r});return}this.readingCalls++;let s=(u,c)=>{if(this.readingCalls--,this.waitingReads.length>0){let f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(u&&c&&i<this.maxRetries){setTimeout(()=>{this.read(t,n,a,i+1,l*2,r)},l);return}r(u,c)},o=this.backend[a].bind(this.backend);if(o.length===2){try{let u=o(t,n);u&&typeof u.then=="function"?u.then(c=>s(null,c)).catch(s):s(null,u)}catch(u){s(u)}return}return o(t,n,s)}prepareLoading(t,n,a={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();F(t)&&(t=this.languageUtils.toResolveHierarchy(t)),F(n)&&(n=[n]);let l=this.queueLoad(t,n,a,i);if(!l.toLoad.length)return l.pending.length||i(),null;l.toLoad.forEach(r=>{this.loadOne(r)})}load(t,n,a){this.prepareLoading(t,n,{},a)}reload(t,n,a){this.prepareLoading(t,n,{reload:!0},a)}loadOne(t,n=""){let a=t.split("|"),i=a[0],l=a[1];this.read(i,l,"read",void 0,void 0,(r,s)=>{r&&this.logger.warn("".concat(n,"loading namespace ").concat(l," for language ").concat(i," failed"),r),!r&&s&&this.logger.log("".concat(n,"loaded namespace ").concat(l," for language ").concat(i),s),this.loaded(t,r,s)})}saveMissing(t,n,a,i,l,r={},s=()=>{}){var o,u,c,f,d;if((u=(o=this.services)==null?void 0:o.utils)!=null&&u.hasLoadedNamespace&&!((f=(c=this.services)==null?void 0:c.utils)!=null&&f.hasLoadedNamespace(n))){this.logger.warn('did not save key "'.concat(a,'" as the namespace "').concat(n,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(a==null||a==="")){if((d=this.backend)!=null&&d.create){let h=L(T({},r),{isUpdate:l}),v=this.backend.create.bind(this.backend);if(v.length<6)try{let g;v.length===5?g=v(t,n,a,i,h):g=v(t,n,a,i),g&&typeof g.then=="function"?g.then(k=>s(null,k)).catch(s):s(null,g)}catch(g){s(g)}else v(t,n,a,i,s,h)}!t||!t[0]||this.store.addResource(t[0],n,a,i)}}},Gc=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),F(e[1])&&(t.defaultValue=e[1]),F(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){let n=e[3]||e[2];Object.keys(n).forEach(a=>{t[a]=n[a]})}return t},interpolation:{escapeValue:!0,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),im=e=>(F(e.ns)&&(e.ns=[e.ns]),F(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),F(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes("cimode")&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),io=()=>{},gT=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})},Jc=class e extends nl{constructor(t={},n){if(super(),this.options=im(t),this.services={},this.logger=Ln,this.modules={external:[]},gT(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(t={},n){this.isInitializing=!0,typeof t=="function"&&(n=t,t={}),t.defaultNS==null&&t.ns&&(F(t.ns)?t.defaultNS=t.ns:t.ns.includes("translation")||(t.defaultNS=t.ns[0]));let a=Gc();this.options=T(T(T({},a),this.options),im(t)),this.options.interpolation=T(T({},a.interpolation),this.options.interpolation),t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=a.overloadTranslationOptionHandler);let i=u=>u?typeof u=="function"?new u:u:null;if(!this.options.isClone){this.modules.logger?Ln.init(i(this.modules.logger),this.options):Ln.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:u=Zc;let c=new oo(this.options);this.store=new ro(this.options.resources,this.options);let f=this.services;f.logger=Ln,f.resourceStore=this.store,f.languageUtils=c,f.pluralResolver=new Qc(c,{prepend:this.options.pluralSeparator}),u&&(f.formatter=i(u),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new uo(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new Fc(i(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(d,...h)=>{this.emit(d,...h)}),this.modules.languageDetector&&(f.languageDetector=i(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=i(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new so(this.services,this.options),this.translator.on("*",(d,...h)=>{this.emit(d,...h)}),this.modules.external.forEach(d=>{d.init&&d.init(this)})}if(this.format=this.options.interpolation.format,n||(n=io),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=(...c)=>this.store[u](...c)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=(...c)=>(this.store[u](...c),this)});let s=Sr(),o=()=>{let u=(c,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(f),n(c,f)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initAsync?o():setTimeout(o,0),s}loadResources(t,n=io){var l,r;let a=n,i=F(t)?t:this.language;if(typeof t=="function"&&(a=t),!this.options.resources||this.options.partialBundledLanguages){if((i==null?void 0:i.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return a();let s=[],o=u=>{if(!u||u==="cimode")return;this.services.languageUtils.toResolveHierarchy(u).forEach(f=>{f!=="cimode"&&(s.includes(f)||s.push(f))})};i?o(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(c=>o(c)),(r=(l=this.options.preload)==null?void 0:l.forEach)==null||r.call(l,u=>o(u)),this.services.backendConnector.load(s,this.options.ns,u=>{!u&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),a(u)})}else a(null)}reloadResources(t,n,a){let i=Sr();return typeof t=="function"&&(a=t,t=void 0),typeof n=="function"&&(a=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),a||(a=io),this.services.backendConnector.reload(t,n,l=>{i.resolve(),a(l)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&rm.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!["cimode","dev"].includes(t)){for(let n=0;n<this.languages.length;n++){let a=this.languages[n];if(!["cimode","dev"].includes(a)&&this.store.hasLanguageSomeTranslations(a)){this.resolvedLanguage=a;break}}!this.resolvedLanguage&&!this.languages.includes(t)&&this.store.hasLanguageSomeTranslations(t)&&(this.resolvedLanguage=t,this.languages.unshift(t))}}changeLanguage(t,n){this.isLanguageChangingTo=t;let a=Sr();this.emit("languageChanging",t);let i=s=>{this.language=s,this.languages=this.services.languageUtils.toResolveHierarchy(s),this.resolvedLanguage=void 0,this.setResolvedLanguage(s)},l=(s,o)=>{o?this.isLanguageChangingTo===t&&(i(o),this.translator.changeLanguage(o),this.isLanguageChangingTo=void 0,this.emit("languageChanged",o),this.logger.log("languageChanged",o)):this.isLanguageChangingTo=void 0,a.resolve((...u)=>this.t(...u)),n&&n(s,(...u)=>this.t(...u))},r=s=>{var c,f;!t&&!s&&this.services.languageDetector&&(s=[]);let o=F(s)?s:s&&s[0],u=this.store.hasLanguageSomeTranslations(o)?o:this.services.languageUtils.getBestMatchFromCodes(F(s)?[s]:s);u&&(this.language||i(u),this.translator.language||this.translator.changeLanguage(u),(f=(c=this.services.languageDetector)==null?void 0:c.cacheUserLanguage)==null||f.call(c,u)),this.loadResources(u,d=>{l(d,u)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?r(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(r):this.services.languageDetector.detect(r):r(t),a}getFixedT(t,n,a,i){let l=i==null?void 0:i.scopeNs,r=(s,o,...u)=>{let c;typeof o!="object"?c=this.options.overloadTranslationOptionHandler([s,o].concat(u)):c=T({},o),c.lng=c.lng||r.lng,c.lngs=c.lngs||r.lngs;let f=c.ns!==void 0&&c.ns!==null;c.ns=c.ns||r.ns,c.keyPrefix!==""&&(c.keyPrefix=c.keyPrefix||a||r.keyPrefix);let d=T(T({},this.options),c);Array.isArray(l)&&!f&&(d.ns=l),typeof c.keyPrefix=="function"&&(c.keyPrefix=gi(c.keyPrefix,d));let h=this.options.keySeparator||".",v;return c.keyPrefix&&Array.isArray(s)?v=s.map(g=>(typeof g=="function"&&(g=gi(g,d)),"".concat(c.keyPrefix).concat(h).concat(g))):(typeof s=="function"&&(s=gi(s,d)),v=c.keyPrefix?"".concat(c.keyPrefix).concat(h).concat(s):s),this.t(v,c)};return F(t)?r.lng=t:r.lngs=t,r.ns=n,r.keyPrefix=a,r}t(...t){var n;return(n=this.translator)==null?void 0:n.translate(...t)}exists(...t){var n;return(n=this.translator)==null?void 0:n.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;let a=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,l=this.languages[this.languages.length-1];if(a.toLowerCase()==="cimode")return!0;let r=(s,o)=>{let u=this.services.backendConnector.state["".concat(s,"|").concat(o)];return u===-1||u===0||u===2};if(n.precheck){let s=n.precheck(this,r);if(s!==void 0)return s}return!!(this.hasResourceBundle(a,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||r(a,t)&&(!i||r(l,t)))}loadNamespaces(t,n){let a=Sr();return this.options.ns?(F(t)&&(t=[t]),t.forEach(i=>{this.options.ns.includes(i)||this.options.ns.push(i)}),this.loadResources(i=>{a.resolve(),n&&n(i)}),a):(n&&n(),Promise.resolve())}loadLanguages(t,n){let a=Sr();F(t)&&(t=[t]);let i=this.options.preload||[],l=t.filter(r=>!i.includes(r)&&this.services.languageUtils.isSupportedCode(r));return l.length?(this.options.preload=i.concat(l),this.loadResources(r=>{a.resolve(),n&&n(r)}),a):(n&&n(),Promise.resolve())}dir(t){var i,l;if(t||(t=this.resolvedLanguage||(((i=this.languages)==null?void 0:i.length)>0?this.languages[0]:this.language)),!t)return"rtl";try{let r=new Intl.Locale(t);if(r&&r.getTextInfo){let s=r.getTextInfo();if(s&&s.direction)return s.direction}}catch(r){}let n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],a=((l=this.services)==null?void 0:l.languageUtils)||new oo(Gc());return t.toLowerCase().indexOf("-latn")>1?"ltr":n.includes(a.getLanguagePartFromCode(t))||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},n){let a=new e(t,n);return a.createInstance=e.createInstance,a}cloneInstance(t={},n=io){let a=t.forkResourceStore;a&&delete t.forkResourceStore;let i=L(T(T({},this.options),t),{isClone:!0}),l=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(l.logger=l.logger.clone(t)),["store","services","language"].forEach(s=>{l[s]=this[s]}),l.services=T({},this.services),l.services.utils={hasLoadedNamespace:l.hasLoadedNamespace.bind(l)},a){let s=Object.keys(this.store.data).reduce((o,u)=>(o[u]=T({},this.store.data[u]),o[u]=Object.keys(o[u]).reduce((c,f)=>(c[f]=T({},o[u][f]),c),o[u]),o),{});l.store=new ro(s,i),l.services.resourceStore=l.store}if(t.interpolation){let s=Gc(),o=T(T(T({},s.interpolation),this.options.interpolation),t.interpolation),u=L(T({},i),{interpolation:o});l.services.interpolator=new uo(u)}return l.translator=new so(l.services,i),l.translator.on("*",(s,...o)=>{l.emit(s,...o)}),l.init(i,n),l.translator.options=i,l.translator.backendConnector.services.utils={hasLoadedNamespace:l.hasLoadedNamespace.bind(l)},l}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}},xt=Jc.createInstance(),lN=xt.createInstance,rN=xt.dir,sN=xt.init,oN=xt.loadResources,uN=xt.reloadResources,cN=xt.use,fN=xt.changeLanguage,dN=xt.getFixedT,pN=xt.t,hN=xt.exists,mN=xt.setDefaultNamespace,gN=xt.hasLoadedNamespace,yN=xt.loadNamespaces,bN=xt.loadLanguages;function kr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function yi(e){"@babel/helpers - typeof";return yi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yi(e)}function om(e,t){if(yi(e)!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var a=n.call(e,t||"default");if(yi(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function co(e){var t=om(e,"string");return yi(t)=="symbol"?t:t+""}function um(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,co(a.key),a)}}function Er(e,t,n){return t&&um(e.prototype,t),n&&um(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}var fm=[],yT=fm.forEach,bT=fm.slice;function vT(e){return yT.call(bT.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e}function ST(e){return e?typeof e=="function"?new e:e:null}function TT(){return{handleEmptyResourcesAsFailed:!0,cacheHitMode:"none",retryOnFailure:!1}}function cm(e,t,n,a){var i=e.read.bind(e);if(i.length===2){try{var l=i(t,n);l&&typeof l.then=="function"?l.then(function(r){return a(null,r)}).catch(a):a(null,l)}catch(r){a(r)}return}i(t,n,a)}var Ic=(function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};kr(this,e),this.backends=[],this.type="backend",this.allOptions=a,this.init(t,n)}return Er(e,[{key:"init",value:function(n){var a=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=n,this.options=vT(i,this.options||{},TT()),this.allOptions=l,this.options.backends&&this.options.backends.length>1&&(this.allOptions.saveMissing||this.allOptions.updateMissing)&&this.services&&this.services.logger&&this.services.logger.warn("i18next-chained-backend: Using multiple backends in combination with saveMissing/updateMissing is not recommended, as it may trigger based on stale data."),this.options.backends&&this.options.backends.forEach(function(r,s){a.backends[s]=a.backends[s]||ST(r),a.backends[s].init(n,a.options.backendOptions&&a.options.backendOptions[s]||{},l)}),this.services&&this.options.reloadInterval&&setInterval(function(){return a.reload()},this.options.reloadInterval)}},{key:"read",value:function(n,a,i){var l=this,r=this.backends.length,s=function(c){if(c>=r)return i(new Error("non of the backend loaded data"),l.options.retryOnFailure);var f=c===r-1,d=l.options.handleEmptyResourcesAsFailed&&!f?0:-1,h=l.backends[c];h.read?cm(h,n,a,function(v,g,k){if(!v&&g&&Object.keys(g).length>d){if(i(null,g,c),o(c-1,g),h.save&&l.options.cacheHitMode&&["refresh","refreshAndUpdateStore"].indexOf(l.options.cacheHitMode)>-1){if(k&&l.options.refreshExpirationTime&&k+l.options.refreshExpirationTime>Date.now())return;var m=l.backends[c+1];m&&m.read&&cm(m,n,a,function(p,b){p||b&&(Object.keys(b).length<=d||(o(c,b),l.options.cacheHitMode==="refreshAndUpdateStore"&&l.services&&l.services.resourceStore&&l.services.resourceStore.addResourceBundle(n,a,b)))})}}else s(c+1)}):s(c+1)},o=function(c,f){if(!(c<0)){var d=l.backends[c];d.save&&d.save(n,a,f),o(c-1,f)}};s(0)}},{key:"create",value:function(n,a,i,l){var r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:function(){},s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};this.backends.forEach(function(o){if(o.create){var u=o.create.bind(o);if(u.length<6){try{var c;u.length===5?c=u(n,a,i,l,s):c=u(n,a,i,l),c&&typeof c.then=="function"?c.then(function(f){return r(null,f)}).catch(r):r(null,c)}catch(f){r(f)}return}u(n,a,i,l,r,s)}})}},{key:"reload",value:function(){var n=this,a=this.services,i=a.backendConnector,l=a.languageUtils,r=a.logger,s=i.language;if(!(s&&s.toLowerCase()==="cimode")){var o=[],u=function(f){var d=l.toResolveHierarchy(f);d.forEach(function(h){o.indexOf(h)<0&&o.push(h)})};u(s),this.allOptions.preload&&this.allOptions.preload.forEach(function(c){return u(c)}),o.forEach(function(c){n.allOptions.ns.forEach(function(f){i.read(c,f,"read",null,null,function(d,h){d&&r.warn("loading namespace ".concat(f," for language ").concat(c," failed"),d),!d&&h&&r.log("loaded namespace ".concat(f," for language ").concat(c),h),i.loaded("".concat(c,"|").concat(f),d,h)})})})}}}])})();Ic.type="backend";var mm=[];mm.forEach;mm.slice;var gm=["__proto__","constructor","prototype"];function ym(e){return!(typeof e!="string"||e.length===0||e.length>128||gm.indexOf(e)>-1||e.indexOf("..")>-1||e.indexOf("\\")>-1||/[?#%\s@]/.test(e)||/[\x00-\x1F\x7F]/.test(e))}function bm(e){return!(!ym(e)||e.indexOf("/")>-1)}function xT(e){return ym(e)}var kT={lng:bm,ns:xT};function fo(e){return typeof e!="string"?e:e.replace(/[\r\n\x00-\x1F\x7F]/g," ")}function ET(e){if(typeof e!="string"||e.length===0)return e;try{let t=new URL(e);return t.username||t.password?(t.username="",t.password="",t.toString()):e}catch(t){return e.replace(/(\/\/)[^/@\s]+@/g,"$1")}}function vm(){return typeof XMLHttpRequest=="function"||typeof XMLHttpRequest=="object"}function AT(e){return!!e&&typeof e.then=="function"}function wT(e){return AT(e)?e:Promise.resolve(e)}var NT=/\{\{(.+?)\}\}/g;function dm(e,t){let n=!1,a=e.replace(NT,(i,l)=>{let r=l.trim();if(gm.indexOf(r)>-1)return i;let s=t[r];if(s==null)return i;let o=kT[r]||bm,u=String(s).split("+");for(let c of u)if(!o(c))return n=!0,i;return u.join("+")});return n?null:a}var bi=typeof globalThis<"u"?globalThis:typeof global<"u"?global:typeof window<"u"?window:void 0,po;typeof fetch=="function"?po=fetch:bi&&typeof bi.fetch=="function"&&(po=bi.fetch);var pm=vm()&&bi?bi.XMLHttpRequest:void 0,RT=typeof ActiveXObject=="function"&&bi?bi.ActiveXObject:void 0,Sm=["__proto__","constructor","prototype"],Pc=(e,t)=>{if(t&&typeof t=="object"){let n="";for(let a of Object.keys(t))Sm.indexOf(a)>-1||(n+="&"+encodeURIComponent(a)+"="+encodeURIComponent(t[a]));if(!n)return e;e=e+(e.indexOf("?")!==-1?"&":"?")+n.slice(1)}return e},hm=(e,t,n,a)=>{let i=l=>{if(!l.ok)return n(l.statusText||"Error",{status:l.status});l.text().then(r=>{n(null,{status:l.status,data:r})}).catch(n)};if(a){let l=a(e,t);if(l instanceof Promise){l.then(i).catch(n);return}}typeof fetch=="function"?fetch(e,t).then(i).catch(n):po(e,t).then(i).catch(n)},OT=(e,t,n,a)=>{e.queryStringParams&&(t=Pc(t,e.queryStringParams));let i=T({},typeof e.customHeaders=="function"?e.customHeaders():e.customHeaders);typeof window>"u"&&typeof global<"u"&&typeof global.process<"u"&&global.process.versions&&global.process.versions.node&&(i["User-Agent"]="i18next-http-backend (node/".concat(global.process.version,"; ").concat(global.process.platform," ").concat(global.process.arch,")")),n&&(i["Content-Type"]="application/json");let l=typeof e.requestOptions=="function"?e.requestOptions(n):e.requestOptions,r=T({method:n?"POST":"GET",body:n?e.stringify(n):void 0,headers:i},e._omitFetchOptions?{}:l),s=typeof e.alternateFetch=="function"&&e.alternateFetch.length>=1?e.alternateFetch:void 0;try{hm(t,r,a,s)}catch(o){if(!l||Object.keys(l).length===0||!o.message||o.message.indexOf("not implemented")<0)return a(o);try{Object.keys(l).forEach(u=>{delete r[u]}),hm(t,r,a,s),e._omitFetchOptions=!0}catch(u){a(u)}}},CT=(e,t,n,a)=>{n&&typeof n=="object"&&(n=Pc("",n).slice(1)),e.queryStringParams&&(t=Pc(t,e.queryStringParams));try{let i=pm?new pm:new RT("MSXML2.XMLHTTP.3.0");i.open(n?"POST":"GET",t,1),e.crossDomain||i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i.withCredentials=!!e.withCredentials,n&&i.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),i.overrideMimeType&&i.overrideMimeType("application/json");let l=e.customHeaders;if(l=typeof l=="function"?l():l,l)for(let r of Object.keys(l))Sm.indexOf(r)>-1||i.setRequestHeader(r,l[r]);i.onreadystatechange=()=>{i.readyState>3&&a(i.status>=400?i.statusText:null,{status:i.status,data:i.responseText})},i.send(n)}catch(i){console&&console.log(i)}},_T=(e,t,n,a)=>{if(typeof n=="function"&&(a=n,n=void 0),a=a||(()=>{}),po&&t.indexOf("file:")!==0)return OT(e,t,n,a);if(vm()||typeof ActiveXObject=="function")return CT(e,t,n,a);a(new Error("No fetch and no xhr implementation found!"))},DT=()=>({loadPath:"/locales/{{lng}}/{{ns}}.json",addPath:"/locales/add/{{lng}}/{{ns}}",parse:e=>JSON.parse(e),stringify:JSON.stringify,parsePayload:(e,t,n)=>({[t]:n||""}),parseLoadPayload:(e,t)=>{},request:_T,reloadInterval:typeof window<"u"?!1:3600*1e3,customHeaders:{},queryStringParams:{},crossDomain:!1,withCredentials:!1,overrideMimeType:!1,requestOptions:{mode:"cors",credentials:"same-origin",cache:"default"}}),Wc=class{constructor(e,t={},n={}){this.services=e,this.options=t,this.allOptions=n,this.type="backend",this.init(e,t,n)}init(e,t={},n={}){if(this.services=e,this.options=T(T(T({},DT()),this.options||{}),t),this.allOptions=n,this.services&&this.options.reloadInterval){let a=setInterval(()=>this.reload(),this.options.reloadInterval);typeof a=="object"&&typeof a.unref=="function"&&a.unref()}}readMulti(e,t,n){this._readAny(e,e,t,t,n)}read(e,t,n){this._readAny([e],e,[t],t,n)}_readAny(e,t,n,a,i){let l=this.options.loadPath;typeof this.options.loadPath=="function"&&(l=this.options.loadPath(e,n)),l=wT(l),l.then(r=>{if(!r)return i(null,{});let s=dm(r,{lng:e.join("+"),ns:n.join("+")});if(s==null){let o=e.map(fo).join(", "),u=n.map(fo).join(", ");return i(new Error("i18next-http-backend: unsafe lng/ns value \u2014 refusing to build request URL for languages=["+o+"] namespaces=["+u+"]"),!1)}this.loadUrl(s,i,t,a)})}loadUrl(e,t,n,a){let i=typeof n=="string"?[n]:n,l=typeof a=="string"?[a]:a,r=this.options.parseLoadPayload(i,l),s=fo(ET(e));this.options.request(this.options,e,r,(o,u)=>{if(u&&(u.status>=500&&u.status<600||!u.status))return t("failed loading "+s+"; status code: "+u.status,!0);if(u&&u.status>=400&&u.status<500)return t("failed loading "+s+"; status code: "+u.status,!1);if(!u&&o&&o.message){let d=o.message.toLowerCase();if(["failed","fetch","network","load"].find(h=>d.indexOf(h)>-1))return t("failed loading "+s+": "+fo(o.message),!0)}if(o)return t(o,!1);let c,f;try{typeof u.data=="string"?c=this.options.parse(u.data,n,a):c=u.data}catch(d){f="failed parsing "+s+" to json"}if(f)return t(f,!1);t(null,c)})}create(e,t,n,a,i){if(!this.options.addPath)return;typeof e=="string"&&(e=[e]);let l=this.options.parsePayload(t,n,a),r=0,s=[],o=[];e.forEach(u=>{let c=this.options.addPath;typeof this.options.addPath=="function"&&(c=this.options.addPath(u,t));let f=dm(c,{lng:u,ns:t});if(f==null){r+=1,i&&r===e.length&&i(s,o);return}this.options.request(this.options,f,l,(d,h)=>{r+=1,s.push(d),o.push(h),r===e.length&&typeof i=="function"&&i(s,o)})})}reload(){let{backendConnector:e,languageUtils:t,logger:n}=this.services,a=e.language;if(a&&a.toLowerCase()==="cimode")return;let i=[],l=r=>{t.toResolveHierarchy(r).forEach(s=>{i.indexOf(s)<0&&i.push(s)})};l(a),this.allOptions.preload&&this.allOptions.preload.forEach(r=>l(r)),i.forEach(r=>{this.allOptions.ns.forEach(s=>{e.read(r,s,"read",null,null,(o,u)=>{o&&n.warn("loading namespace ".concat(s," for language ").concat(r," failed"),o),!o&&u&&n.log("loaded namespace ".concat(s," for language ").concat(r),u),e.loaded("".concat(r,"|").concat(s),o,u)})})})}};Wc.type="backend";function Tm(e,t,n){return(t=co(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,a)}return n}function ef(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?xm(Object(n),!0).forEach(function(a){Tm(e,a,n[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xm(Object(n)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(n,a))})}return e}var MT=(function(){function e(t){kr(this,e),this.store=t.store}return Er(e,[{key:"setItem",value:function(n,a){if(this.store)try{this.store.setItem(n,a)}catch(i){}}},{key:"getItem",value:function(n,a){if(this.store)try{return this.store.getItem(n,a)}catch(i){}}}])})();function zT(){var e=null;try{e=window.localStorage}catch(t){typeof window<"u"&&console.log("Failed to load local storage.",t)}return{prefix:"i18next_res_",expirationTime:10080*60*1e3,defaultVersion:void 0,getVersion:void 0,versions:{},store:e}}var tf=(function(){function e(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};kr(this,e),this.init(t,n),this.type="backend"}return Er(e,[{key:"init",value:function(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.services=n,this.options=ef(ef(ef({},zT()),this.options),a),this.storage=new MT(this.options)}},{key:"read",value:function(n,a,i){var l=Date.now();if(!this.storage.store)return i(null,null);var r=this.storage.getItem("".concat(this.options.prefix).concat(n,"-").concat(a));if(r){r=JSON.parse(r);var s=this.getVersion(n,a);if(r.i18nStamp&&r.i18nStamp+this.options.expirationTime>l&&s===r.i18nVersion){var o=r.i18nStamp;return delete r.i18nVersion,delete r.i18nStamp,i(null,r,o)}}return i(null,null)}},{key:"save",value:function(n,a,i){if(this.storage.store){i.i18nStamp=Date.now();var l=this.getVersion(n,a);l&&(i.i18nVersion=l),this.storage.setItem("".concat(this.options.prefix).concat(n,"-").concat(a),JSON.stringify(i))}}},{key:"getVersion",value:function(n,a){var i,l;return((i=(l=this.options).getVersion)===null||i===void 0?void 0:i.call(l,n,a))||this.options.versions[n]||this.options.defaultVersion}}])})();tf.type="backend";var ax=Q(be(),1);var wr=Q(be(),1);var IT=Q(Um());var mo=(e,t,n,a)=>{var l,r,s,o;let i=[n,T({code:t},a||{})];if((r=(l=e==null?void 0:e.services)==null?void 0:l.logger)!=null&&r.forward)return e.services.logger.forward(i,"warn","react-i18next::",!0);kn(i[0])&&(i[0]="react-i18next:: ".concat(i[0])),(o=(s=e==null?void 0:e.services)==null?void 0:s.logger)!=null&&o.warn?e.services.logger.warn(...i):console!=null&&console.warn&&console.warn(...i)},Bm={},Ca=(e,t,n,a)=>{kn(n)&&Bm[n]||(kn(n)&&(Bm[n]=new Date),mo(e,t,n,a))},Hm=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},go=(e,t,n)=>{e.loadNamespaces(t,Hm(e,n))},cf=(e,t,n,a)=>{if(kn(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return go(e,n,a);n.forEach(i=>{e.options.ns.indexOf(i)<0&&e.options.ns.push(i)}),e.loadLanguages(t,Hm(e,a))},qm=(e,t,n={})=>!t.languages||!t.languages.length?(Ca(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(a,i)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!i(a.isLanguageChangingTo,e))return!1}});var kn=e=>typeof e=="string",ff=e=>typeof e=="object"&&e!==null;var PT=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,WT={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"\xA9","©":"\xA9","®":"\xAE","®":"\xAE","…":"\u2026","…":"\u2026","/":"/","/":"/"},ex=e=>WT[e],df=e=>e.replace(PT,ex);var pf={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:df,transDefaultProps:void 0},yo=(e={})=>{pf=T(T({},pf),e)},Ar=()=>pf;var jm,bo=e=>{jm=e},En=()=>jm;var Vm=Q(be(),1);var vo={type:"3rdParty",init(e){yo(e.options.react),bo(e)}};var _a=(0,Vm.createContext)(),So=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}};var $m=Q(be(),1);var vi=Q(be(),1);var ll=class e extends Error{constructor(t,n,a){super(t),this.name="TranslationParserError",this.position=n,this.translationString=a,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};var Ym={" ":"\xA0","&":"&","<":"<",">":">",""":'"',"'":"'","©":"\xA9","®":"\xAE","™":"\u2122","…":"\u2026","–":"\u2013","—":"\u2014","‘":"\u2018","’":"\u2019","‚":"\u201A","“":"\u201C","”":"\u201D","„":"\u201E","†":"\u2020","‡":"\u2021","•":"\u2022","′":"\u2032","″":"\u2033","‹":"\u2039","›":"\u203A","§":"\xA7","¶":"\xB6","·":"\xB7"," ":"\u2002"," ":"\u2003"," ":"\u2009","€":"\u20AC","£":"\xA3","¥":"\xA5","¢":"\xA2","¤":"\xA4","×":"\xD7","÷":"\xF7","−":"\u2212","±":"\xB1","≠":"\u2260","≤":"\u2264","≥":"\u2265","≈":"\u2248","≡":"\u2261","∞":"\u221E","∫":"\u222B","∑":"\u2211","∏":"\u220F","√":"\u221A","∂":"\u2202","‰":"\u2030","°":"\xB0","µ":"\xB5","←":"\u2190","↑":"\u2191","→":"\u2192","↓":"\u2193","↔":"\u2194","↵":"\u21B5","⇐":"\u21D0","⇑":"\u21D1","⇒":"\u21D2","⇓":"\u21D3","⇔":"\u21D4","α":"\u03B1","β":"\u03B2","γ":"\u03B3","δ":"\u03B4","ε":"\u03B5","ζ":"\u03B6","η":"\u03B7","θ":"\u03B8","ι":"\u03B9","κ":"\u03BA","λ":"\u03BB","μ":"\u03BC","ν":"\u03BD","ξ":"\u03BE","ο":"\u03BF","π":"\u03C0","ρ":"\u03C1","σ":"\u03C3","τ":"\u03C4","υ":"\u03C5","φ":"\u03C6","χ":"\u03C7","ψ":"\u03C8","ω":"\u03C9","Α":"\u0391","Β":"\u0392","Γ":"\u0393","Δ":"\u0394","Ε":"\u0395","Ζ":"\u0396","Η":"\u0397","Θ":"\u0398","Ι":"\u0399","Κ":"\u039A","Λ":"\u039B","Μ":"\u039C","Ν":"\u039D","Ξ":"\u039E","Ο":"\u039F","Π":"\u03A0","Ρ":"\u03A1","Σ":"\u03A3","Τ":"\u03A4","Υ":"\u03A5","Φ":"\u03A6","Χ":"\u03A7","Ψ":"\u03A8","Ω":"\u03A9","À":"\xC0","Á":"\xC1","Â":"\xC2","Ã":"\xC3","Ä":"\xC4","Å":"\xC5","Æ":"\xC6","Ç":"\xC7","È":"\xC8","É":"\xC9","Ê":"\xCA","Ë":"\xCB","Ì":"\xCC","Í":"\xCD","Î":"\xCE","Ï":"\xCF","Ð":"\xD0","Ñ":"\xD1","Ò":"\xD2","Ó":"\xD3","Ô":"\xD4","Õ":"\xD5","Ö":"\xD6","Ø":"\xD8","Ù":"\xD9","Ú":"\xDA","Û":"\xDB","Ü":"\xDC","Ý":"\xDD","Þ":"\xDE","ß":"\xDF","à":"\xE0","á":"\xE1","â":"\xE2","ã":"\xE3","ä":"\xE4","å":"\xE5","æ":"\xE6","ç":"\xE7","è":"\xE8","é":"\xE9","ê":"\xEA","ë":"\xEB","ì":"\xEC","í":"\xED","î":"\xEE","ï":"\xEF","ð":"\xF0","ñ":"\xF1","ò":"\xF2","ó":"\xF3","ô":"\xF4","õ":"\xF5","ö":"\xF6","ø":"\xF8","ù":"\xF9","ú":"\xFA","û":"\xFB","ü":"\xFC","ý":"\xFD","þ":"\xFE","ÿ":"\xFF","¡":"\xA1","¿":"\xBF","ƒ":"\u0192","ˆ":"\u02C6","˜":"\u02DC","Œ":"\u0152","œ":"\u0153","Š":"\u0160","š":"\u0161","Ÿ":"\u0178","ª":"\xAA","º":"\xBA","¯":"\xAF","´":"\xB4","¸":"\xB8","¹":"\xB9","²":"\xB2","³":"\xB3","¼":"\xBC","½":"\xBD","¾":"\xBE","♠":"\u2660","♣":"\u2663","♥":"\u2665","♦":"\u2666","◊":"\u25CA","‾":"\u203E","⁄":"\u2044","℘":"\u2118","ℑ":"\u2111","ℜ":"\u211C","ℵ":"\u2135"},ix=new RegExp(Object.keys(Ym).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),"g"),Gm=e=>e.replace(ix,t=>Ym[t]).replace(/&#(\d+);/g,(t,n)=>String.fromCharCode(parseInt(n,10))).replace(/&#x([0-9a-fA-F]+);/g,(t,n)=>String.fromCharCode(parseInt(n,16)));var Km=e=>{let t=[],n=0,a="",i=()=>{a&&(t.push({type:"Text",value:a,position:n-a.length}),a="")};for(;n<e.length;){let l=e[n];if(l==="<"){let r=e.slice(n).match(/^<(\d+)>/);if(r)i(),t.push({type:"TagOpen",value:r[0],position:n,tagNumber:parseInt(r[1],10)}),n+=r[0].length;else{let s=e.slice(n).match(/^<\/(\d+)>/);s?(i(),t.push({type:"TagClose",value:s[0],position:n,tagNumber:parseInt(s[1],10)}),n+=s[0].length):(a+=l,n+=1)}}else a+=l,n+=1}return i(),t};var Nr=Q(be(),1);var lx=(e,t,n)=>{let{type:a,props:i={}}=e;if(i.children&&Array.isArray(i.children)&&n){let l=i,{children:r}=l,s=ia(l,["children"]);return Nr.default.createElement(a,s,...t)}return t.length===0?Nr.default.createElement(a,i):t.length===1?Nr.default.createElement(a,i,t[0]):Nr.default.createElement(a,i,...t)},Xm=(e,t=[])=>{if(!e)return[];let n=Km(e),a=[],i=[],l=new Set,r=()=>{var o;if(i.length===0)return t;let s=i[i.length-1];return(o=s.declaration.props)!=null&&o.children&&Array.isArray(s.declaration.props.children)?s.declaration.props.children:s.declarations};if(n.forEach(s=>{switch(s.type){case"Text":{let o=Gm(s.value);(i.length>0?i[i.length-1].children:a).push(o)}break;case"TagOpen":{let{tagNumber:o}=s,u=r(),c=u[o];if(!c){l.add(o);let f="<".concat(o,">");(i.length>0?i[i.length-1].children:a).push(f);break}i.push({tagNumber:o,children:[],position:s.position,declaration:c,declarations:u})}break;case"TagClose":{let{tagNumber:o}=s;if(l.has(o)){let d="</".concat(o,">");(i.length>0?i[i.length-1].children:a).push(d),l.delete(o);break}if(i.length===0)throw new ll("Unexpected closing tag </".concat(o,"> at position ").concat(s.position),s.position,e);let u=i.pop();if(u.tagNumber!==o)throw new ll("Mismatched tags: expected </".concat(u.tagNumber,"> but got </").concat(o,"> at position ").concat(s.position),s.position,e);let c=lx(u.declaration,u.children,u.declarations);(i.length>0?i[i.length-1].children:a).push(c)}break}}),i.length>0){let s=i[i.length-1];throw new ll("Unclosed tag <".concat(s.tagNumber,"> at position ").concat(s.position),s.position,e)}return a};function To({i18nKey:e,defaultTranslation:t,content:n,ns:a,values:i={},i18n:l,t:r}){var d,h,v,g;let s=l||En();if(!s)return Ca(s,"NO_I18NEXT_INSTANCE","IcuTrans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:e}),vi.default.createElement(vi.default.Fragment,{},t);let o=r||((d=s.t)==null?void 0:d.bind(s))||(k=>k),u=a||o.ns||((h=s.options)==null?void 0:h.defaultNS);u=kn(u)?[u]:u||["translation"];let c=i;(g=(v=s.options)==null?void 0:v.interpolation)!=null&&g.defaultVariables&&(c=i&&Object.keys(i).length>0?T(T({},i),s.options.interpolation.defaultVariables):T({},s.options.interpolation.defaultVariables));let f=o(e,L(T({defaultValue:t},c),{ns:u}));try{let k=Xm(f,n);return vi.default.createElement(vi.default.Fragment,{},...k)}catch(k){return mo(s,"ICU_TRANS_RENDER_ERROR",'IcuTrans component error for key "'.concat(e,'": ').concat(k.message),{i18nKey:e,error:k}),vi.default.createElement(vi.default.Fragment,{},f)}}To.displayName="IcuTransWithoutContext";function Qm({i18nKey:e,defaultTranslation:t,content:n,ns:a,values:i={},i18n:l,t:r}){var f;let{i18n:s,defaultNS:o}=(0,$m.useContext)(_a)||{},u=l||s||En(),c=r||(u==null?void 0:u.t.bind(u));return To({i18nKey:e,defaultTranslation:t,content:n,ns:a||(c==null?void 0:c.ns)||o||((f=u==null?void 0:u.options)==null?void 0:f.defaultNS),values:i,i18n:u,t:r})}Qm.displayName="IcuTrans";var rt=Q(be(),1),Pm=Q(Im(),1);var mx=(e,t)=>{if(kn(t))return t;if(ff(t)&&kn(t.defaultValue))return t.defaultValue;if(typeof e=="function")return"";if(Array.isArray(e)){let n=e[e.length-1];return typeof n=="function"?"":n}return e},gx={t:mx,ready:!1},yx=()=>()=>{},qe=(e,t={})=>{var M,U,ue;let{i18n:n}=t,{i18n:a,defaultNS:i}=(0,rt.useContext)(_a)||{},l=n||a||En();l&&!l.reportNamespaces&&(l.reportNamespaces=new So),l||Ca(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");let r=(0,rt.useMemo)(()=>{var K;return T(T(T({},Ar()),(K=l==null?void 0:l.options)==null?void 0:K.react),t)},[l,t]),{useSuspense:s,keyPrefix:o}=r,u=e||i||((M=l==null?void 0:l.options)==null?void 0:M.defaultNS),c=kn(u)?[u]:u||["translation"],f=(0,rt.useMemo)(()=>c,c);(ue=(U=l==null?void 0:l.reportNamespaces)==null?void 0:U.addUsedNamespaces)==null||ue.call(U,f);let d=(0,rt.useRef)(0),h=(0,rt.useCallback)(K=>{if(!l)return yx;let{bindI18n:q,bindI18nStore:O}=r,X=()=>{d.current+=1,K()};return q&&l.on(q,X),O&&l.store.on(O,X),()=>{q&&q.split(" ").forEach(I=>l.off(I,X)),O&&O.split(" ").forEach(I=>l.store.off(I,X))}},[l,r]),v=(0,rt.useRef)(),g=(0,rt.useCallback)(()=>{if(!l)return gx;let K=!!(l.isInitialized||l.initializedStoreOnce)&&f.every(Ee=>qm(Ee,l,r)),q=t.lng||l.language,O=d.current,X=v.current;if(X&&X.ready===K&&X.lng===q&&X.keyPrefix===o&&X.revision===O)return X;let pe={t:l.getFixedT(q,r.nsMode==="fallback"?f:f[0],o,{scopeNs:f}),ready:K,lng:q,keyPrefix:o,revision:O};return v.current=pe,pe},[l,f,o,r,t.lng]),[k,m]=(0,rt.useState)(0),{t:p,ready:b}=(0,Pm.useSyncExternalStore)(h,g,g);(0,rt.useEffect)(()=>{if(l&&!b&&!s){let K=()=>m(q=>q+1);t.lng?cf(l,t.lng,f,K):go(l,f,K)}},[l,t.lng,f,b,s,k]);let S=l||{},x=(0,rt.useRef)(null),R=(0,rt.useRef)(),N=K=>{let q=Object.getOwnPropertyDescriptors(K);q.__original&&delete q.__original;let O=Object.create(Object.getPrototypeOf(K),q);if(!Object.prototype.hasOwnProperty.call(O,"__original"))try{Object.defineProperty(O,"__original",{value:K,writable:!1,enumerable:!1,configurable:!1})}catch(X){}return O},D=(0,rt.useMemo)(()=>{let K=S,q=K==null?void 0:K.language,O=K;K&&(x.current&&x.current.__original===K?R.current!==q?(O=N(K),x.current=O,R.current=q):O=x.current:(O=N(K),x.current=O,R.current=q));let X=!b&&!s?(...pe)=>(Ca(l,"USE_T_BEFORE_READY","useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t."),p(...pe)):p,I=[X,O,b];return I.t=X,I.i18n=O,I.ready=b,I},[p,S,b,S.resolvedLanguage,S.language,S.languages]);if(l&&s&&!b)throw new Promise(K=>{let q=()=>K();t.lng?cf(l,t.lng,f,q):go(l,f,q)});return D};var Wm=Q(be(),1);var eg=Q(be(),1);var xx=Q(be(),1);var vx=Q(be(),1);var tg={auth:{invalidUsernamePass:"Invalid username/password combination",tooManyAttempts:"Too many login attempts. Please try again later.",incorrectOldPassword:"Incorrect Old Password",passwordTooShort:"Password must be at least 6 characters long",passUpdated:"Password updated",missingRequiredFields:"Missing Required Fields"},error:{notFound:"Not Found",internalError:"Internal Server Error",invalidArgs:"Invalid Arguments",badMethod:"Bad Method",notAuthenticated:"Not Authenticated",permissionDenied:"Permission Denied",error:"error: {{status}}",errorWithMsg:"error {{status}}: {{msg}}",requestTimedOut:"request timed out",networkError:"network error"},nav:{privateProfileEnabled:"private profile enabled",darkMode:"dark mode",lightMode:"light mode",addUrl:"add url",addNote:"add note",notes:"notes",settings:"settings",logout:"log out",login:"log in"},footer:{sourceCode:"Source Code"},login:{pageTitle:"Log In",username:"Username",password:"Password",submit:"Log In"},changePassword:{oldPassword:"Old Password",newPassword:"New Password",submit:"Save Changes"},settings:{serverDefault:"Server Default",bookmarklet:"add url bookmarklet",changePassword:"Change Password",groupLanguage:"Language",groupArchive:"Archiving",groupGeneral:"General",groupPrivacy:"Privacy & Sharing",archiveDefault:"Archive new non-Private bookmarks by default",privateDefault:"Default new bookmarks to Private",suggestTags:"Enable tag suggestions",suggestTagsUseReturnKey:"Use return key to apply tag suggestions",privacyLock:"Privacy Lock (Private Account)",publicTagCloud:"Public Tag Cloud (visible to visitors)",previewNotes:"Show note previews in the note list",archivingDisabled:"Archiving Disabled",language:"Language",tabAccount:"Account Settings",tabImportExport:"Import / Export",export:"Export",import:"Import",exportBookmarksJson:"Bookmarks (JSON)",exportBookmarksHtml:"Bookmarks (Netscape HTML)",exportNotesJson:"Notes (JSON)",importBookmarksJson:"Bookmarks (Espial/Pinboard JSON)",importFirefoxJson:"Bookmarks (Firefox JSON)",importNetscapeHtml:"Bookmarks (Netscape HTML)",importNotesJson:"Notes (JSON)",importing:"importing\u2026",imported_one:"{{count}} item imported",imported_other:"{{count}} items imported",importParseError:"could not read file",tabApi:"Api",apiKeyTitle:"API Key",apiKeyHasKey:"An API key is currently set.",apiKeyNoKey:"No API key is set.",apiKeyCreate:"Create API Key",apiKeyReset:"Reset API Key",apiKeyRevoke:"Revoke",apiKeyShownOnce:"This key is shown only once. Copy it now \u2014 you won't be able to see it again.",apiKeyResetHint:"Resetting or revoking invalidates your current key.",apiKeyCopy:"copy",apiKeyCopied:"copied"},rss:"RSS",filter:{all:"all",private:"private",public:"public",unread:"unread",untagged:"untagged",starred:"starred"},pagination:{perPage:"per page:"},pager:{earlier:"\xAB earlier",later:"later \xBB"},notes:{count_one:"{{count}} note",count_other:"{{count}} notes"},search:{placeholder:"search",clearTitle:"clear search results",submitTitle:"submit search",syntaxTitle:"search syntax"},noTitle:"[no title]",edit:"edit",delete:"delete",cancel:"cancel",destroy:"destroy",save:"save",fetch:"fetch",archive:"archive",archiving:"archiving",bmark:{archiveLinkTitle:"archive link",markAsRead:"mark as read",viewInContext:"view in context",url:"url",title:"title",description:"description",tags:"tags",private:"private",toread:"to-read"},note:{killed:"you killed this note",titleLabel:"title:",descriptionLabel:"description:",useMarkdown:"use markdown?",publicLabel:"public?"},addForm:{previouslySaved:"previously saved",url:"URL",archive:"archive",archiveUnavailable:"archiving is unavailable for private bookmarks",readLater:"read later",update:"update bookmark",add:"add bookmark",killed:"you killed this bookmark"},tagCloud:{relatedTags:"Related Tags",topTags:"Top Tags",topTagsTitle:"show a cloud of your most-used tags",allTitle:"show all tags",min2Title:"show tags with at least 2 bookmarks",min5Title:"show tags with at least 5 bookmarks",min10Title:"show tags with at least 10 bookmarks",min20Title:"show tags with at least 20 bookmarks",hide:"hide",show:"show"},bulkEdit:{edit:"edit",select:"select:",oneBookmarkSelected:"1 bookmark selected",bookmarksSelected:"{{count}} bookmarks selected",thisPage:"this page",allPages:"all pages",action:"action:",markAsRead:"mark as read",unread:"unread",addStars:"add stars",removeStars:"remove stars",makePrivate:"make private",makePublic:"make public",removeTags:"remove tags:",addTags:"add tags:",submitting:"submitting\u2026",submit:"submit",destroyOne:"destroy 1 bookmark?",destroyMany:"destroy {{count}} bookmarks?",publicOne:"make 1 bookmark public?",publicMany:"make {{count}} bookmarks public?",pleaseAddSelection:"please add a bookmark selection",pleaseChooseAction:"please choose an action or enter tags",tooManyTags:"cannot add more than 10 tags at the same time when over 20,000 bookmarks would be affected",pageMismatch:"page bookmark count mismatch",editedCount_one:"edited {{editedCount}} bookmark",editedCount_other:"edited {{editedCount}} bookmarks",editedCountMismatch_one:"selection count was {{selectionCount}}, but edited {{editedCount}} bookmark, due to matching bookmark data having changed",editedCountMismatch_other:"selection count was {{selectionCount}}, but edited {{editedCount}} bookmarks, due to matching bookmark data having changed"},bulkEditNotes:{oneNoteSelected:"1 note selected",notesSelected:"{{count}} notes selected",destroyOne:"destroy 1 note?",destroyMany:"destroy {{count}} notes?",publicOne:"make 1 note public?",publicMany:"make {{count}} notes public?",useMarkdown:"use markdown",usePlaintext:"use plaintext",pleaseAddSelection:"please add a note selection",pleaseChooseAction:"please choose an action",pageMismatch:"page note count mismatch",editedCount_one:"edited {{editedCount}} note",editedCount_other:"edited {{editedCount}} notes",editedCountMismatch_one:"selection count was {{selectionCount}}, but edited {{editedCount}} note, due to matching note data having changed",editedCountMismatch_other:"selection count was {{selectionCount}}, but edited {{editedCount}} notes, due to matching note data having changed"},docs:{title:"Understanding the Search Syntax",pageFilters:"Page filters",pageFiltersDesc:"Searches are scoped to the currently selected page filter.",soGiven:"So, given the possible page filters",if:"If",isCurrentlySelectedIncludes:"is currently selected, the search includes",bookmarks:"bookmarks",isCurrentlySelectedOnly:"is currently selected, the search only includes",bookmarksEtc:"bookmarks, etc..",combineAnd:"Combine Searches (AND)",separateBySpace:"Separate terms by a space.",forExample:"For example,",combineOr:"Combine Searches (OR)",put:"Put",betweenQuery:"between each search query.",excludeWords:"Exclude words from your search",inFrontWord:"in front of a word you want to leave out.",exactMatch:"Search for an exact match",putInQuotes:"Put a word or phrase inside quotes.",specificField:"Search on a specific field",inFrontTerm:"in front of the term,",where:"where",isOneOfOptions:"is one of the options below",bookmarkSearch:"Bookmark Search",noteSearch:"Note Search",fieldHeader:"FIELD",exampleHeader:"EXAMPLE",complexExamples:"More Complex Examples",complexExample1Desc:'"youtube" in url, and title of "haskell" or title of "python" and after 12/31/2017',complexExample2Desc:'"hacker news" not in title, and "news", "cnn", "npr" anywhere, or "the guardian" in the description'}};function Xe(){return globalThis.app}function sl(e=navigator.language,t){let a=(t instanceof Date?t.getTime():new Date(t).getTime())-Date.now(),i=Math.abs(a),l=[["year",365*24*60*60*1e3],["month",720*60*60*1e3],["day",1440*60*1e3],["hour",3600*1e3],["minute",60*1e3],["second",1e3]],r=new Intl.RelativeTimeFormat(e,{numeric:"auto"});for(let[s,o]of l)if(i>=o||s==="second")return r.format(Math.round(a/o),s);return""}function Da(e,t){return new Date(t).toLocaleString(e,{dateStyle:"full",timeStyle:"long"})}function ng(e,t){return new Date(t).toLocaleDateString(e,{year:"numeric",month:"short",day:"numeric"})}function ol(e){e.close()}function xo(e){var t;(t=document.getElementById(e))==null||t.focus()}function Ex(e){return decodeURIComponent(e)}function Ax(e){var r;let t=e.slice(0,1),a=(t==="#"||t==="?"?e.slice(1):e).split("&").filter(s=>s!==""),i=s=>Ex(s.replace(/\+/g," ")),l=[];for(let s of a){let[o,...u]=s.split("=");o&&(u.length===0?l.push([i(o),null]):u.length===1&&l.push([i(o),i((r=u[0])!=null?r:"")]))}return l}function Rr(){return Ax(window.location.search)}function Or(e,t){for(let[n,a]of e)if(n===t)return a;return null}function ul(e){return encodeURIComponent(e.replace(/\+/g,"%2B"))}function Un(e){return e!=null?e:""}function ra(e){var t;return(t=e==null?void 0:e.replace(/,/g," ").replace(/\s+/g," ").trim())!=null?t:""}function ft(e,t,n){let a=n.trim();return!a.includes("\n")&&!a.includes("doctype html")&&a.length>0?e("error.errorWithMsg",{status:t,msg:a}):e("error.error",{status:t})}function ag(e){let t=5381,n=e.length;for(;n;)t=t*33^e.charCodeAt(--n);return(t>>>0).toString(36)}var ig="translation";var mf=Xe();xt.use(Ic).use(vo).init({lng:mf.lang,fallbackLng:"en",defaultNS:ig,ns:[ig],partialBundledLanguages:!0,resources:{en:{translation:tg}},backend:{backends:[tf,Wc],backendOptions:[{prefix:"i18next_res_".concat(ag(mf.i18nR),"_"),expirationTime:10080*60*1e3},{loadPath:"".concat(mf.i18nR,"/{{lng}}/{{ns}}.json")}]},interpolation:{escapeValue:!1},load:"currentOnly"});var j1=Q(be()),Dh=Q(U0());var Kn=class extends Error{constructor(){super(...arguments);G(this,"name","KyError")}get isKyError(){return!0}};var er=class extends Kn{constructor(n,a,i){var u;let l=n.status||n.status===0?n.status:"",r=(u=n.statusText)!=null?u:"",s="".concat(l," ").concat(r).trim(),o=s?"status code ".concat(s):"an unknown error";super("Request failed with ".concat(o,": ").concat(a.method," ").concat(a.url));G(this,"name","HTTPError");G(this,"response");G(this,"request");G(this,"options");G(this,"data");this.response=n,this.request=a,this.options=i}};var tr=class extends Kn{constructor(n,a){super("Request failed due to a network error: ".concat(n.method," ").concat(n.url),a);G(this,"name","NetworkError");G(this,"request");this.request=n}};var nr=class extends Error{constructor(n){let a="Non-error value was thrown";try{typeof n=="string"?a=n:n&&typeof n=="object"&&"message"in n&&typeof n.message=="string"&&(a=n.message)}catch(i){}super(a);G(this,"name","NonError");G(this,"value");this.value=n}};var ji=class extends Kn{constructor(n){let a=n!=null&&n.cause?n.cause instanceof Error?n.cause:new nr(n.cause):void 0;super(n!=null&&n.code?"Forced retry: ".concat(n.code):"Forced retry",a?{cause:a}:void 0);G(this,"name","ForceRetryError");G(this,"customDelay");G(this,"code");G(this,"customRequest");this.customDelay=n==null?void 0:n.delay,this.code=n==null?void 0:n.code,this.customRequest=n==null?void 0:n.request}};var Pu=class extends Error{constructor(n){super("Response schema validation failed");G(this,"name","SchemaValidationError");G(this,"issues");this.issues=n}};var ge=class extends Kn{constructor(n){super("Request timed out: ".concat(n.method," ").concat(n.url));G(this,"name","TimeoutError");G(this,"request");this.request=n}};var Zp=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream=="function",a=typeof globalThis.Request=="function";if(n&&a)try{t=new globalThis.Request("https://empty.invalid",{body:new globalThis.ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type")}catch(i){if(i instanceof Error&&i.message==="unsupported BodyInit type")return!1;throw i}return e&&!t})(),B0=typeof globalThis.AbortController=="function",Wu=typeof globalThis.AbortSignal=="function"&&typeof globalThis.AbortSignal.any=="function",H0=typeof globalThis.ReadableStream=="function",q0=typeof globalThis.FormData=="function",ec=["get","post","put","patch","head","delete"],tA=()=>{};tA();var j0={json:"application/json",text:"text/*",formData:"multipart/form-data",arrayBuffer:"*/*",blob:"*/*",bytes:"*/*"},ar=2147483647,V0=40,tc=Symbol("stop"),_s=class{constructor(t){G(this,"options");this.options=t}},Y0=e=>new _s(e),G0={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,baseUrl:!0,prefix:!0,retry:!0,timeout:!0,totalTimeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},K0={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0};var nc=new TextEncoder,nA=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,a]of e)t+=V0,t+=nc.encode('Content-Disposition: form-data; name="'.concat(n,'"')).byteLength,t+=typeof a=="string"?nc.encode(a).byteLength:a.size;return t}return e instanceof Blob?e.size:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:typeof e=="string"?nc.encode(e).byteLength:e instanceof URLSearchParams?nc.encode(e.toString()).byteLength:0},X0=(e,t,n)=>{let a,i=0;return e.pipeThrough(new TransformStream({transform(l,r){if(r.enqueue(l),a){i+=a.byteLength;let s=t===0?0:i/t;s>=1&&(s=1-Number.EPSILON),n==null||n({percent:s,totalBytes:Math.max(t,i),transferredBytes:i},a)}a=l},flush(){a&&(i+=a.byteLength,n==null||n({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},a))}}))},$0=(e,t)=>{if(!e.body)return e;let n={status:e.status,statusText:e.statusText,headers:e.headers};if(e.status===204)return new Response(null,n);let a=Math.max(0,Number(e.headers.get("content-length"))||0);return new Response(X0(e.body,a,t),n)},Q0=(e,t,n)=>{if(!e.body)return e;let a=nA(n!=null?n:e.body);return new Request(e,{duplex:"half",body:X0(e.body,a,t)})};var Xn=e=>e!==null&&typeof e=="object";var aA=Symbol("replaceOption"),Fp=e=>Xn(e)&&e[aA]===!0?{isReplace:!0,value:e.value}:{isReplace:!1,value:e};var Ms=(...e)=>{for(let t of e)if((!Xn(t)||Array.isArray(t))&&t!==void 0)throw new TypeError("The `options` argument must be an object");return Pp({},...e)},Ip=(e={},t={})=>{let n=new globalThis.Headers(e),a=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[l,r]of i.entries())a&&r==="undefined"||r===void 0?n.delete(l):n.set(l,r);return n},Jp=e=>{if(!Xn(e)||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},ir=e=>{if(e instanceof URLSearchParams){let t=new URLSearchParams(e),n=e[si];return n&&(t[si]=new Set(n)),t}return e instanceof globalThis.Headers?new globalThis.Headers(e):Array.isArray(e)?[...e]:Jp(e)?T({},e):e},iA=e=>Object.fromEntries(Object.entries(e).filter(t=>t[1]!==void 0)),lA=(e,t)=>Jp(e)&&Jp(t)?iA(T(T({},e),t)):Ip(e,t);function Ds(e,t,n){var a,i;return Object.hasOwn(t,n)&&t[n]===void 0?[]:Pp((a=e[n])!=null?a:[],(i=t[n])!=null?i:[])}var ac=(e={},t={})=>({init:Ds(e,t,"init"),beforeRequest:Ds(e,t,"beforeRequest"),beforeRetry:Ds(e,t,"beforeRetry"),beforeError:Ds(e,t,"beforeError"),afterResponse:Ds(e,t,"afterResponse")}),si=Symbol("deletedParameters"),rA=(e,t)=>{let n=new URLSearchParams,a=new Set;for(let i of[e,t])if(i!==void 0)if(i instanceof URLSearchParams){for(let[r,s]of i.entries())n.append(r,s),a.delete(r);let l=i[si];if(l)for(let r of l)n.delete(r),a.add(r)}else if(Array.isArray(i))for(let l of i){if(!Array.isArray(l)||l.length!==2)throw new TypeError("Array search parameters must be provided in [[key, value], ...] format");n.append(String(l[0]),String(l[1])),a.delete(String(l[0]))}else if(Xn(i))for(let[l,r]of Object.entries(i))r===void 0?(n.delete(l),a.add(l)):(n.append(l,String(r)),a.delete(l));else{let l=new URLSearchParams(i);for(let[r,s]of l.entries())n.append(r,s),a.delete(r)}return a.size>0&&(n[si]=a),n},Pp=(...e)=>{let t={},n={},a={},i,l=[];for(let r of e)if(Array.isArray(r))Array.isArray(t)||(t=[]),t=[...t,...r];else if(Xn(r)){for(let[s,o]of Object.entries(r)){if(s==="signal"&&o instanceof globalThis.AbortSignal){l.push(o);continue}let u=Fp(o),{isReplace:c}=u;if(o=u.value,s==="context"){if(o!=null&&(!Xn(o)||Array.isArray(o)))throw new TypeError("The `context` option must be an object");t=L(T({},t),{context:o==null?{}:T(c?{}:T({},t.context),o)});continue}if(s==="searchParams"){o==null?i=void 0:c?i=o:i=i===void 0?o:rA(i,o);continue}Xn(o)&&!c&&s in t&&(o=Pp(t[s],o)),t=L(T({},t),{[s]:o})}if(Xn(r.hooks)){let{value:s,isReplace:o}=Fp(r.hooks);a=ac(o?{}:a,s),t.hooks=a}if(Xn(r.headers)){let{value:s,isReplace:o}=Fp(r.headers);n=o?ir(s):lA(n,s),t.headers=n}}return i!==void 0&&(t.searchParams=i),l.length>0&&(l.length===1?t.signal=l[0]:Wu?t.signal=AbortSignal.any(l):t.signal=l.at(-1)),t};var F0=e=>ec.includes(e)?e.toUpperCase():e,sA=["get","put","head","delete","options","trace"],oA=[408,413,429,500,502,503,504],uA=[413,429,503],Z0={limit:2,methods:sA,statusCodes:oA,afterStatusCodes:uA,maxRetryAfter:Number.POSITIVE_INFINITY,backoffLimit:Number.POSITIVE_INFINITY,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},J0=(e={})=>{var n;if(typeof e=="number")return L(T({},Z0),{limit:e});if(e.methods&&!Array.isArray(e.methods))throw new Error("retry.methods must be an array");if(e.statusCodes&&!Array.isArray(e.statusCodes))throw new Error("retry.statusCodes must be an array");let t=Object.fromEntries(Object.entries(L(T({},e),{methods:(n=e.methods)==null?void 0:n.map(a=>a.toLowerCase())})).filter(([,a])=>a!==void 0));return T(T({},Z0),t)};async function Wp(e,t,n,a){return new Promise((i,l)=>{let r=setTimeout(()=>{n&&n.abort(),l(new ge(e))},a.timeout);a.fetch(e,t).then(i).catch(l).then(()=>{clearTimeout(r)})})}async function ic(e,{signal:t}){return new Promise((n,a)=>{t&&(t.throwIfAborted(),t.addEventListener("abort",i,{once:!0}));function i(){clearTimeout(l),a(t.reason)}let l=setTimeout(()=>{t==null||t.removeEventListener("abort",i),n()},e)})}var I0=e=>{let t={};for(let n in e)Object.hasOwn(e,n)&&!(n in K0)&&!(n in G0)&&(t[n]=e[n]);return t},P0=e=>{var t;return e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0||!!((t=e[si])!=null&&t.size):typeof e=="object"?Object.keys(e).length>0:typeof e=="string"?e.trim().length>0:!!e};var cA=Object.prototype.toString,fA=e=>cA.call(e)==="[object Error]",dA=new Set(["network error","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function eh(e){if(!(e&&fA(e)&&e.name==="TypeError"&&typeof e.message=="string"))return!1;let{message:n,stack:a}=e;return n==="Load failed"?a===void 0||"__sentry_captured__"in e:n.startsWith("error sending request for url")||n==="Failed to fetch"||n.startsWith("Failed to fetch (")&&n.endsWith(")")?!0:dA.has(n)}var th=(e,t)=>e instanceof t||(e==null?void 0:e.name)===t.name;function W0(e){return th(e,er)}function eS(e){return th(e,tr)}function tS(e){return th(e,ge)}var pA=10*1024*1024,hA="The `prefixUrl` option has been renamed `prefix` in v2 and enhanced to allow slashes in input. See also the new `baseUrl` option for improved flexibility with standard URL resolution: https://github.com/sindresorhus/ky#baseurl",zs=Symbol("timedOutResponseData"),mA=e=>{var a;let t=/;\s*charset\s*=\s*(?:"([^"]+)"|([^;,\s]+))/i.exec(e),n=(a=t==null?void 0:t[1])!=null?a:t==null?void 0:t[2];if(n)try{return new TextDecoder(n)}catch(i){}return new TextDecoder},nS="The `schema` argument must follow the Standard Schema specification",gA=e=>typeof e!="object"?e:T(T(T(T({},e),e.methods&&{methods:[...e.methods]}),e.statusCodes&&{statusCodes:[...e.statusCodes]}),e.afterStatusCodes&&{afterStatusCodes:[...e.afterStatusCodes]}),lS=Object.prototype.toString,aS=e=>e instanceof globalThis.Request||lS.call(e)==="[object Request]",Ls=e=>e instanceof globalThis.Response||lS.call(e)==="[object Response]",yA=e=>Array.isArray(e)?e.map(t=>[...t]):ir(e);function bA(e){let t=L(T({},e),{json:ir(e.json),context:ir(e.context),headers:ir(e.headers),searchParams:yA(e.searchParams)});return e.retry!==void 0&&(t.retry=gA(e.retry)),t}var iS=async(e,t)=>{if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(nS);let n=t["~standard"];if(typeof n!="object"||n===null||typeof n.validate!="function")throw new TypeError(nS);let a=await n.validate(e);if(a.issues)throw new Pu(a.issues);return a.value},fc,rS,Na,Rn,ct,_,js,Yi,Vs,Gi,sr,Ki,Ys,C,Vi,sS,nh,oS,ah,uS,cS,fS,lc,oi,ih,Us,dS,pS,lh,rc,sc,oc,Bs,rh,lr,uc,rr,cc,hS,Hs=class Hs{constructor(t,n={}){Dt(this,C);G(this,"request");Dt(this,Na);Dt(this,Rn,0);Dt(this,ct);Dt(this,_);Dt(this,js);Dt(this,Yi);Dt(this,Vs,new WeakSet);Dt(this,Gi);Dt(this,sr);Dt(this,Ki,!1);Dt(this,Ys,new WeakMap);var i,l,r,s,o,u,c,f,d,h,v,g,k,m;if(Tt(this,ct,t),Object.hasOwn(n,"prefixUrl"))throw new Error(hA);if(Tt(this,_,L(T({},n),{headers:Ip(E(this,ct).headers,n.headers),hooks:ac({},n.hooks),method:F0((l=(i=n.method)!=null?i:E(this,ct).method)!=null?l:"GET"),prefix:String(n.prefix||""),retry:J0(n.retry),throwHttpErrors:(r=n.throwHttpErrors)!=null?r:!0,timeout:(s=n.timeout)!=null?s:1e4,totalTimeout:(o=n.totalTimeout)!=null?o:!1,fetch:(u=n.fetch)!=null?u:globalThis.fetch.bind(globalThis),context:(c=n.context)!=null?c:{}})),typeof E(this,ct)!="string"&&!(E(this,ct)instanceof URL||E(this,ct)instanceof globalThis.Request))throw new TypeError("`input` must be a string, URL, or Request");if(typeof E(this,ct)=="string"){if(E(this,_).prefix){let p=E(this,_).prefix.replace(/\/+$/,""),b=E(this,ct).replace(/^\/+/,"");Tt(this,ct,"".concat(p,"/").concat(b))}if(E(this,_).baseUrl){let p;try{p=new URL(E(this,ct))}catch(b){}p||Tt(this,ct,new URL(E(this,ct),new Request(E(this,_).baseUrl).url))}}B0&&Wu&&(Tt(this,Yi,(f=E(this,_).signal)!=null?f:E(this,ct).signal),Tt(this,Na,new globalThis.AbortController),E(this,_).signal=H(this,C,ih).call(this)),Zp&&(E(this,_).duplex="half"),E(this,_).json!==void 0&&(E(this,_).body=(v=(h=(d=E(this,_)).stringifyJson)==null?void 0:h.call(d,E(this,_).json))!=null?v:JSON.stringify(E(this,_).json),E(this,_).headers.set("content-type",(g=E(this,_).headers.get("content-type"))!=null?g:"application/json"));let a=n.headers&&new globalThis.Headers(n.headers).has("content-type");if(E(this,ct)instanceof globalThis.Request&&(q0&&E(this,_).body instanceof globalThis.FormData||E(this,_).body instanceof URLSearchParams)&&!a&&E(this,_).headers.delete("content-type"),this.request=new globalThis.Request(E(this,ct),E(this,_)),P0(E(this,_).searchParams)){let p=new URL(this.request.url),b=(k=E(this,_).searchParams)==null?void 0:k[si];if(b)for(let S of b)p.searchParams.delete(S);if(typeof E(this,_).searchParams=="string"){let S=E(this,_).searchParams.replace(/^\?/,"");S!==""&&(p.search=p.search?"".concat(p.search,"&").concat(S):"?".concat(S))}else{let S=new URLSearchParams(H(m=Hs,fc,rS).call(m,E(this,_).searchParams));for(let[x,R]of S.entries())p.searchParams.append(x,R)}if(E(this,_).searchParams&&typeof E(this,_).searchParams=="object"&&!Array.isArray(E(this,_).searchParams)&&!(E(this,_).searchParams instanceof URLSearchParams))for(let[S,x]of Object.entries(E(this,_).searchParams))x===void 0&&p.searchParams.delete(S);this.request=new globalThis.Request(p,E(this,_))}if(E(this,_).onUploadProgress&&typeof E(this,_).onUploadProgress!="function")throw new TypeError("The `onUploadProgress` option must be a function");Tt(this,sr,typeof E(this,_).totalTimeout=="number"?H(this,C,rh).call(this):void 0)}static create(t,n){var o,u,c,f;let a=(u=(o=n.hooks)==null?void 0:o.init)!=null?u:[],i=a.length>0?bA(n):n;for(let d of a)d(i);let l=new Hs(t,i),r=async()=>{var g,k,m,p,b,S,x,R,N,D,M,U,ue;if(typeof E(l,_).timeout=="number"&&E(l,_).timeout>ar)throw new RangeError("The `timeout` option cannot be greater than ".concat(ar));if(typeof E(l,_).totalTimeout=="number"&&E(l,_).totalTimeout>ar)throw new RangeError("The `totalTimeout` option cannot be greater than ".concat(ar));await Promise.resolve();let d=await H(g=l,C,dS).call(g),h=d!=null?d:await H(k=l,C,lh).call(k,async()=>{var K;return H(K=l,C,oc).call(K)}),v=d!==void 0||H(m=l,C,sc).call(m);for(;;){if(h===void 0)return h;if(Ls(h))try{h=await H(p=l,C,pS).call(p,h)}catch(q){if(!(q instanceof ji))throw q;let O=await H(b=l,C,rc).call(b,q,async()=>{var X;return H(X=l,C,oc).call(X)});if(O===void 0)return O;h=O,v=H(S=l,C,sc).call(S);continue}let K=h;if(!K.ok&&K.type!=="opaque"&&(typeof E(l,_).throwHttpErrors=="function"?E(l,_).throwHttpErrors(K.status):E(l,_).throwHttpErrors)){let q=new er(K,H(x=l,C,rr).call(x,K),H(R=l,C,lr).call(R)),O=q;if(q.data=await H(N=l,C,oS).call(N,K),v)throw O;let X=await H(D=l,C,rc).call(D,q,async()=>{var I;return H(I=l,C,oc).call(I)});if(X===void 0)return X;h=X,v=H(M=l,C,sc).call(M);continue}break}if(!Ls(h))return h;if(H(U=l,C,nh).call(U,h),E(l,_).onDownloadProgress){if(typeof E(l,_).onDownloadProgress!="function")throw new TypeError("The `onDownloadProgress` option must be a function");if(!H0)throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");let K=h.clone();return H(ue=l,C,oi).call(ue,h),$0(K,E(l,_).onDownloadProgress)}return h},s=(async()=>{var d,h,v,g,k;try{return await r()}catch(m){if(!(m instanceof Error)||E(l,Vs).has(m))throw m;let p=m;for(let b of E(l,_).hooks.beforeError){let S=await b({request:l.request,options:H(d=l,C,lr).call(d),error:p,retryCount:E(l,Rn)});S instanceof Error&&(p=S)}throw p}finally{let m=E(l,js);H(v=l,C,lc).call(v,(h=m==null?void 0:m.body)!=null?h:void 0),l.request!==m&&H(k=l,C,lc).call(k,(g=l.request.body)!=null?g:void 0)}})();for(let[d,h]of Object.entries(j0))d==="bytes"&&typeof((f=(c=globalThis.Response)==null?void 0:c.prototype)==null?void 0:f.bytes)!="function"||(s[d]=async v=>{var p;l.request.headers.set("accept",l.request.headers.get("accept")||h);let g=await s;if(d!=="json")return g[d]();let k=await g.text();if(k==="")return v!==void 0?iS(void 0,v):JSON.parse(k);let m=i.parseJson?await i.parseJson(k,{request:H(p=l,C,rr).call(p,g),response:g}):JSON.parse(k);return v===void 0?m:iS(m,v)});return s}};fc=new WeakSet,rS=function(t){return t&&typeof t=="object"&&!Array.isArray(t)&&!(t instanceof URLSearchParams)?Object.fromEntries(Object.entries(t).filter(([,n])=>n!==void 0)):t},Na=new WeakMap,Rn=new WeakMap,ct=new WeakMap,_=new WeakMap,js=new WeakMap,Yi=new WeakMap,Vs=new WeakMap,Gi=new WeakMap,sr=new WeakMap,Ki=new WeakMap,Ys=new WeakMap,C=new WeakSet,Vi=function(){let t=E(this,_).retry.delay(E(this,Rn)+1),n=t;return E(this,_).retry.jitter===!0?n=Math.random()*t:typeof E(this,_).retry.jitter=="function"&&(n=E(this,_).retry.jitter(t),(!Number.isFinite(n)||n<0)&&(n=t)),Math.min(E(this,_).retry.backoffLimit,n)},sS=async function(t){var a,i,l,r,s;if(E(this,Rn)>=E(this,_).retry.limit)throw t;let n=t instanceof Error?t:new nr(t);if(n instanceof ji)return(a=n.customDelay)!=null?a:H(this,C,Vi).call(this);if(!E(this,_).retry.methods.includes(this.request.method.toLowerCase()))throw t;if(E(this,_).retry.shouldRetry!==void 0){let o=await E(this,_).retry.shouldRetry({error:n,retryCount:E(this,Rn)+1});if(o===!1)throw t;if(o===!0)return H(this,C,Vi).call(this)}if(tS(t)){if(!E(this,_).retry.retryOnTimeout)throw t;return H(this,C,Vi).call(this)}if(W0(t)){if(!E(this,_).retry.statusCodes.includes(t.response.status))throw t;let o=(s=(r=(l=(i=t.response.headers.get("Retry-After"))!=null?i:t.response.headers.get("RateLimit-Reset"))!=null?l:t.response.headers.get("X-RateLimit-Retry-After"))!=null?r:t.response.headers.get("X-RateLimit-Reset"))!=null?s:t.response.headers.get("X-Rate-Limit-Reset");if(o&&E(this,_).retry.afterStatusCodes.includes(t.response.status)){let u=Number(o)*1e3;return Number.isNaN(u)?u=Date.parse(o)-Date.now():u>=Date.parse("2024-01-01")&&(u-=Date.now()),Number.isFinite(u)?(u=Math.max(0,u),Math.min(E(this,_).retry.maxRetryAfter,u)):Math.min(E(this,_).retry.maxRetryAfter,H(this,C,Vi).call(this))}if(t.response.status===413)throw t;return H(this,C,Vi).call(this)}if(!eS(t))throw t;return H(this,C,Vi).call(this)},nh=function(t){let n=H(this,C,rr).call(this,t);return E(this,_).parseJson&&(t.json=async()=>{let a=await t.text();return a===""?JSON.parse(a):E(this,_).parseJson(a,{request:n,response:t})}),t},oS=async function(t){var i;let n=await H(this,C,cS).call(this,t,H(this,C,ah).call(this));if(n===zs){H(this,C,Us).call(this);return}if(!n)return;if(!H(this,C,uS).call(this,(i=t.headers.get("content-type"))!=null?i:""))return n;let a=await H(this,C,fS).call(this,n,t,H(this,C,ah).call(this),H(this,C,rr).call(this,t));if(a===zs){H(this,C,Us).call(this);return}return a},ah=function(){let t=E(this,_).timeout===!1?1e4:E(this,_).timeout,n=H(this,C,Bs).call(this);if(n===void 0)return t;if(n<=0)throw new ge(this.request);return Math.min(t,n)},uS=function(t){var a;let n=((a=t.split(";",1)[0])!=null?a:"").trim().toLowerCase();return/\/(?:.*[.+-])?json$/.test(n)},cS=async function(t,n){var f;let{body:a}=t;if(!a)try{return await t.text()}catch(d){return}let i;try{i=a.getReader()}catch(d){return}let l=mA((f=t.headers.get("content-type"))!=null?f:""),r=[],s=0,o=(async()=>{try{for(;;){let{done:d,value:h}=await i.read();if(d)break;if(s+=h.byteLength,s>pA){i.cancel().catch(()=>{});return}r.push(l.decode(h,{stream:!0}))}}catch(d){return}return r.push(l.decode()),r.join("")})(),u=new Promise(d=>{let h=setTimeout(()=>{d(zs)},n);o.finally(()=>{clearTimeout(h)})}),c=await Promise.race([o,u]);return c===zs&&i.cancel().catch(()=>{}),c},fS=async function(t,n,a,i){let l;try{return await Promise.race([Promise.resolve().then(()=>E(this,_).parseJson?E(this,_).parseJson(t,{request:i,response:n}):JSON.parse(t)),new Promise(r=>{l=setTimeout(()=>{r(zs)},a)})])}catch(r){return}finally{clearTimeout(l)}},lc=function(t){t&&t.cancel().catch(()=>{})},oi=function(t){var n;H(this,C,lc).call(this,(n=t.body)!=null?n:void 0)},ih=function(){return E(this,Yi)?AbortSignal.any([E(this,Yi),E(this,Na).signal]):E(this,Na).signal},Us=function(){let t=H(this,C,Bs).call(this);if(t!==void 0&&t<=0)throw new ge(this.request)},dS=async function(){for(let t of E(this,_).hooks.beforeRequest){let n=await t({request:this.request,options:H(this,C,lr).call(this),retryCount:0});if(aS(n))H(this,C,uc).call(this,n);else if(Ls(n))return n}},pS=async function(t){let n=H(this,C,rr).call(this,t);for(let a of E(this,_).hooks.afterResponse){let i=H(this,C,cc).call(this,t.clone(),n);H(this,C,nh).call(this,i);let l;try{l=await a({request:this.request,options:H(this,C,lr).call(this),response:i,retryCount:E(this,Rn)})}catch(s){throw i!==t&&H(this,C,oi).call(this,i),H(this,C,oi).call(this,t),s}if(l instanceof _s)throw i!==t&&H(this,C,oi).call(this,i),H(this,C,oi).call(this,t),new ji(l.options);let r=Ls(l)?H(this,C,cc).call(this,l,n):t;i!==t&&i!==r&&i.body!==r.body&&H(this,C,oi).call(this,i),t!==r&&t.body!==r.body&&H(this,C,oi).call(this,t),t=r}return t},lh=async function(t){try{return await t()}catch(n){return H(this,C,rc).call(this,n,t)}},rc=async function(t,n){Tt(this,Ki,!1);let a=Math.min(await H(this,C,sS).call(this,t),ar),i={signal:E(this,Yi)},l=H(this,C,Bs).call(this);if(l!==void 0){if(l<=0)throw new ge(this.request);if(a>=l)throw await ic(l,i),new ge(this.request)}if(await ic(a,i),H(this,C,Us).call(this),t instanceof ji&&t.customRequest){let r=new globalThis.Request(t.customRequest,E(this,_).signal?{signal:E(this,_).signal}:void 0);H(this,C,uc).call(this,r)}for(let r of E(this,_).hooks.beforeRetry){let s;try{s=await r({request:this.request,options:H(this,C,lr).call(this),error:t,retryCount:E(this,Rn)+1})}catch(o){throw o instanceof Error&&o!==t&&E(this,Vs).add(o),o}if(aS(s)){H(this,C,uc).call(this,s);break}if(Ls(s))return Tt(this,Ki,!0),jc(this,Rn)._++,s;if(s===tc)return}return H(this,C,Us).call(this),jc(this,Rn)._++,H(this,C,lh).call(this,n)},sc=function(){let t=E(this,Ki);return Tt(this,Ki,!1),t},oc=async function(){var i,l;(i=E(this,Na))!=null&&i.signal.aborted&&(Tt(this,Na,new globalThis.AbortController),E(this,_).signal=H(this,C,ih).call(this),this.request=new globalThis.Request(this.request,{signal:E(this,_).signal}));let t=I0(E(this,_)),n=E(this,_).retry.limit>0?this.request.clone():void 0,a=H(this,C,hS).call(this,this.request,(l=E(this,_).body)!=null?l:void 0);Tt(this,js,a),n&&(this.request=n);try{let r=H(this,C,Bs).call(this);if(r!==void 0&&r<=0)throw new ge(this.request);let s=E(this,_).timeout===!1?r:r===void 0?E(this,_).timeout:Math.min(E(this,_).timeout,r),o=s===void 0?await E(this,_).fetch(a,t):await Wp(a,t,E(this,Na),{timeout:s,fetch:E(this,_).fetch});return H(this,C,cc).call(this,o,a)}catch(r){throw eh(r)?new tr(this.request,{cause:r}):r}},Bs=function(){if(E(this,sr)===void 0)return;let t=H(this,C,rh).call(this)-E(this,sr);return Math.max(0,E(this,_).totalTimeout-t)},rh=function(){var t,n;return(n=(t=globalThis.performance)==null?void 0:t.now())!=null?n:Date.now()},lr=function(){if(!E(this,Gi)){let t=E(this,_),{hooks:n,json:a,parseJson:i,stringifyJson:l,searchParams:r,timeout:s,totalTimeout:o,throwHttpErrors:u,fetch:c}=t,f=ia(t,["hooks","json","parseJson","stringifyJson","searchParams","timeout","totalTimeout","throwHttpErrors","fetch"]);Tt(this,Gi,Object.freeze(f))}return E(this,Gi)},uc=function(t){Tt(this,Gi,void 0),this.request=t},rr=function(t){var n;return(n=E(this,Ys).get(t))!=null?n:this.request},cc=function(t,n){return E(this,Ys).set(t,n),t},hS=function(t,n){var a;return!E(this,_).onUploadProgress||!t.body||!Zp?t:Q0(t,E(this,_).onUploadProgress,(a=n!=null?n:E(this,_).body)!=null?a:void 0)},Dt(Hs,fc);var qs=Hs;var sh=e=>{let t=(n,a)=>qs.create(n,Ms(e,a));for(let n of ec)t[n]=(a,i)=>qs.create(a,Ms(e,i,{method:n}));return t.create=n=>sh(Ms(n)),t.extend=n=>(typeof n=="function"&&(n=n(e!=null?e:{})),sh(Ms(e,n))),t.stop=tc,t.retry=Y0,t},vA=sh(),mS=vA;function SA(e){let t=Xe(),n=new Headers(e);return n.set(t.csrfHeaderName,t.csrfToken),n}async function yt(e,t,n={}){var i;return await mS(t,{method:e,headers:SA(n.headers),body:(i=n.body)!=null?i:void 0,throwHttpErrors:!1,timeout:n.timeout})}async function gS(e,t){let n=await yt("PATCH","api/bm/".concat(e.toString(),"/").concat(t),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:n.ok,status:n.status,bodyText:await n.text()}}async function yS(e){let t=await yt("PATCH","api/bm/".concat(e.toString(),"/read"),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function dc(e){let t=await yt("DELETE","api/bm/".concat(e.toString()),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function bS(e){return SS("api/bm/bulk",e)}async function vS(e){return SS("api/note/bulk",e)}async function SS(e,t){var r;let n=await yt("POST",e,{headers:{"content-type":"application/json"},body:JSON.stringify(t),timeout:3e5}),a=(r=n.headers.get("content-type"))!=null?r:"",i,l;if(a.includes("application/json"))try{l=await n.json()}catch(s){l=void 0}else i=await n.text();return{ok:n.ok,status:n.status,bodyText:i,data:l}}async function TS(e){let t=await yt("POST","api/bm/".concat(e.toString(),"/archive"),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function pc(e){let t=await yt("POST","api/add",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function xS(e){let t=await yt("POST","api/note/add",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function hc(e){let t=await yt("POST","api/lookuptitle",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});return t.status===200?await t.text():null}async function kS(e){let t=Xe().tagCloudR;if(!t)return null;let n=await yt("POST",t,{headers:{"content-type":"application/json"},body:JSON.stringify(e)});if(!n.ok)return null;try{return await n.json()}catch(a){return null}}async function ES(e){await yt("POST","api/tagcloudmode",{headers:{"content-type":"application/json"},body:JSON.stringify(e)})}async function AS(e){let t=await yt("POST","api/tagSuggestions",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});if(!t.ok)return null;try{return await t.json()}catch(n){return null}}async function wS(e){let t=await yt("DELETE","api/note/".concat(e.toString()),{headers:{"content-type":"application/x-www-form-urlencoded"}});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function NS(e){let t=await yt("POST","api/accountSettings",{headers:{"content-type":"application/json"},body:JSON.stringify(e)});return{ok:t.ok,status:t.status,bodyText:await t.text()}}async function RS(){let e=await yt("POST","Settings/apikey");if(e.ok)try{let t=await e.json();return{ok:!0,status:e.status,apiKey:t.apiKey}}catch(t){return{ok:!0,status:e.status}}return{ok:!1,status:e.status,bodyText:await e.text()}}async function OS(){let e=await yt("DELETE","Settings/apikey");return{ok:e.ok,status:e.status,bodyText:await e.text()}}var mc={bookmarksJson:"Settings/export/bookmarks/json",bookmarksHtml:"Settings/export/bookmarks/netscape",notesJson:"Settings/export/notes/json"};async function gc(e,t,n){let a=await yt("POST",e,{headers:{"content-type":t},body:n,timeout:3e5});if(a.ok)try{let i=await a.json();return{ok:!0,status:a.status,imported:i.imported}}catch(i){return{ok:!0,status:a.status}}return{ok:!1,status:a.status,bodyText:await a.text()}}var CS=e=>gc("Settings/import/bookmarks/json","application/json",e),_S=e=>gc("Settings/import/bookmarks/firefox","application/json",e),DS=e=>gc("Settings/import/bookmarks/netscape","text/plain",e),MS=e=>gc("Settings/import/notes/json","application/json",e);async function zS(){let e=Xe();await yt("POST",e.authRlogoutR),window.location.reload()}var tn=Q(be());var z=Q(Le()),kA={account:"Settings",importexport:"Settings/importexport",api:"Settings/api"};function Gs(e){return new URL(kA[e],document.baseURI).pathname}function HS(){let e=window.location.pathname;return e===Gs("importexport")?"importexport":e===Gs("api")?"api":"account"}function qS({initial:e}){let{t}=qe(),[n,a]=tn.default.useState(HS);tn.default.useEffect(()=>{let l=()=>{a(HS())};return window.addEventListener("popstate",l),()=>{window.removeEventListener("popstate",l)}},[]);function i(l,r){return(0,z.jsx)("a",{href:Gs(l),className:"dib link".concat(n===l?" nav-active":" silver hover-alt"),onClick:s=>{s.preventDefault(),window.location.pathname!==Gs(l)&&window.history.pushState(null,"",Gs(l)),a(l)},children:r})}return(0,z.jsxs)("div",{children:[(0,z.jsxs)("div",{className:"mb3",children:[i("account",t("settings.tabAccount"))," \u2027 ",i("importexport",t("settings.tabImportExport"))," \u2027 ",i("api",t("settings.tabApi"))]}),(0,z.jsx)("div",{className:n==="account"?"":"dn",children:(0,z.jsx)(EA,{initial:e})}),(0,z.jsx)("div",{className:n==="importexport"?"":"dn",children:(0,z.jsx)(AA,{})}),(0,z.jsx)("div",{className:n==="api"?"":"dn",children:(0,z.jsx)(wA,{initialHasApiKey:e.hasApiKey})})]})}function EA({initial:e}){var u;let{t}=qe(),[n,a]=tn.default.useState(e),[i,l]=tn.default.useState(null),r=!n.archiveBackendEnabled,s=r?t("settings.archivingDisabled"):void 0;async function o(c){try{let f=await NS(c);if(!f.ok)return l(ft(t,f.status,f.bodyText)),!1;l(null),a(c);let d=document.getElementById("privacy-lock-icon");return d&&(d.style.display=c.privacyLock?"":"none"),!0}catch(f){return l(f instanceof ge?t("error.requestTimedOut"):t("error.networkError")),!1}}return(0,z.jsxs)("div",{className:"settings-form",children:[(0,z.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.groupLanguage")}),(0,z.jsx)("div",{className:"flex items-center mb3",children:(0,z.jsxs)("select",{id:"language",name:"language",className:"pointer","aria-label":t("settings.language"),value:(u=n.language)!=null?u:"",onChange:c=>{let f=L(T({},n),{language:c.target.value===""?null:c.target.value});o(f).then(d=>{d&&window.location.reload()})},children:[(0,z.jsx)("option",{value:"",children:t("settings.serverDefault")}),(0,z.jsx)("option",{value:"en",children:"English"}),(0,z.jsx)("option",{value:"de",children:"Deutsch"}),(0,z.jsx)("option",{value:"es",children:"Espa\xF1ol"}),(0,z.jsx)("option",{value:"fr",children:"Fran\xE7ais"}),(0,z.jsx)("option",{value:"it",children:"Italiano"}),(0,z.jsx)("option",{value:"ja",children:"\u65E5\u672C\u8A9E"}),(0,z.jsx)("option",{value:"ko",children:"\uD55C\uAD6D\uC5B4"}),(0,z.jsx)("option",{value:"pl",children:"Polski"}),(0,z.jsx)("option",{value:"pt-BR",children:"Portugu\xEAs (Brasil)"}),(0,z.jsx)("option",{value:"ru",children:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439"}),(0,z.jsx)("option",{value:"tr",children:"T\xFCrk\xE7e"}),(0,z.jsx)("option",{value:"uk",children:"\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430"}),(0,z.jsx)("option",{value:"zh-Hans",children:"\u7B80\u4F53\u4E2D\u6587"}),(0,z.jsx)("option",{value:"zh-Hant",children:"\u7E41\u9AD4\u4E2D\u6587"})]})}),(0,z.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.groupGeneral")}),(0,z.jsxs)("div",{className:"flex items-center mb2",children:[(0,z.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"suggestTags",name:"suggestTags",checked:n.suggestTags,onChange:c=>{o(L(T({},n),{suggestTags:c.target.checked}))}}),(0,z.jsx)("label",{htmlFor:"suggestTags",className:"lh-copy",children:t("settings.suggestTags")})]}),(0,z.jsxs)("div",{className:"flex items-center mb2",children:[(0,z.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"suggestTagsUseReturnKey",name:"suggestTagsUseReturnKey",checked:n.suggestTagsUseReturnKey,onChange:c=>{o(L(T({},n),{suggestTagsUseReturnKey:c.target.checked}))}}),(0,z.jsx)("label",{htmlFor:"suggestTagsUseReturnKey",className:"lh-copy",children:t("settings.suggestTagsUseReturnKey")})]}),(0,z.jsxs)("div",{className:"flex items-center mb3",children:[(0,z.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"previewNotes",name:"previewNotes",checked:n.previewNotes,onChange:c=>{o(L(T({},n),{previewNotes:c.target.checked}))}}),(0,z.jsx)("label",{htmlFor:"previewNotes",className:"lh-copy",children:t("settings.previewNotes")})]}),(0,z.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.groupArchive")}),(0,z.jsxs)("div",{className:"flex items-center mb3".concat(r?" o-50":""),title:s,children:[(0,z.jsx)("input",{type:"checkbox",className:"mr2".concat(r?"":" pointer"),id:"archiveDefault",name:"archiveDefault",checked:n.archiveDefault,disabled:r,title:s,onChange:c=>{o(L(T({},n),{archiveDefault:c.target.checked}))}}),(0,z.jsx)("label",{htmlFor:"archiveDefault",className:"lh-copy".concat(r?" thm-text-tertiary":""),title:s,children:t("settings.archiveDefault")})]}),(0,z.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.groupPrivacy")}),(0,z.jsxs)("div",{className:"flex items-center mb2",children:[(0,z.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"privateDefault",name:"privateDefault",checked:n.privateDefault,onChange:c=>{o(L(T({},n),{privateDefault:c.target.checked}))}}),(0,z.jsx)("label",{htmlFor:"privateDefault",className:"lh-copy",children:t("settings.privateDefault")})]}),(0,z.jsxs)("div",{className:"flex items-center mb2",children:[(0,z.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"publicTagCloud",name:"publicTagCloud",checked:n.publicTagCloud,onChange:c=>{o(L(T({},n),{publicTagCloud:c.target.checked}))}}),(0,z.jsx)("label",{htmlFor:"publicTagCloud",className:"lh-copy",children:t("settings.publicTagCloud")})]}),(0,z.jsxs)("div",{className:"flex items-center mb2",children:[(0,z.jsx)("input",{type:"checkbox",className:"pointer mr2",id:"privacyLock",name:"privacyLock",checked:n.privacyLock,onChange:c=>{o(L(T({},n),{privacyLock:c.target.checked}))}}),(0,z.jsx)("label",{htmlFor:"privacyLock",className:"lh-copy",children:t("settings.privacyLock")})]}),i?(0,z.jsx)("div",{className:"thm-text-error f7 mt2",children:i}):null]})}function AA(){let{t:e}=qe(),[t,n]=tn.default.useState(null),[a,i]=tn.default.useState(null),[l,r]=tn.default.useState(!1);async function s(f,d,h){var v;if(!(!f||f.length===0)){i(null),n(e("settings.importing")),r(!0);try{let g=await Promise.all(Array.from(f).map(p=>p.text())),k;try{k=d(g)}catch(p){n(null),i(e("settings.importParseError"));return}let m=await h(k);m.ok?n(e("settings.imported",{count:(v=m.imported)!=null?v:0})):(n(null),i(e("error.error",{status:m.status})))}catch(g){n(null),i(g instanceof ge?e("error.requestTimedOut"):e("error.networkError"))}finally{r(!1)}}}let o=f=>{var d;return(d=f[0])!=null?d:""},u=f=>{let d=[];for(let h of f){let v=JSON.parse(h);Array.isArray(v)?d.push(...v):d.push(v)}return JSON.stringify(d)};function c(f,d,h,v,g=!1){return(0,z.jsxs)("div",{className:"mb2",children:[(0,z.jsx)("div",{className:"mb1",children:f}),(0,z.jsx)("input",{type:"file",accept:d,multiple:g,disabled:l,className:"f7 pointer",onChange:k=>{s(k.target.files,h,v),k.target.value=""}})]})}return(0,z.jsxs)("div",{className:"settings-form",children:[(0,z.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:e("settings.export")}),(0,z.jsx)("div",{className:"mb1",children:(0,z.jsx)("a",{className:"link",href:mc.bookmarksJson,download:!0,children:e("settings.exportBookmarksJson")})}),(0,z.jsx)("div",{className:"mb1",children:(0,z.jsx)("a",{className:"link",href:mc.bookmarksHtml,download:!0,children:e("settings.exportBookmarksHtml")})}),(0,z.jsx)("div",{className:"mb3",children:(0,z.jsx)("a",{className:"link",href:mc.notesJson,download:!0,children:e("settings.exportNotesJson")})}),(0,z.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:e("settings.import")}),c(e("settings.importBookmarksJson"),".json",o,CS),c(e("settings.importFirefoxJson"),".json",o,_S),c(e("settings.importNetscapeHtml"),".html,.htm",o,DS),c(e("settings.importNotesJson"),".json",u,MS,!0),t?(0,z.jsx)("div",{className:"f7 mt2",children:t}):null,a?(0,z.jsx)("div",{className:"thm-text-error f7 mt2",children:a}):null]})}function wA({initialHasApiKey:e}){let{t}=qe(),[n,a]=tn.default.useState(e),[i,l]=tn.default.useState(null),[r,s]=tn.default.useState(!1),[o,u]=tn.default.useState(null),[c,f]=tn.default.useState(!1);async function d(){var g;u(null),s(!1),f(!0);try{let k=await RS();k.ok&&k.apiKey?(l(k.apiKey),a(!0)):u(ft(t,k.status,(g=k.bodyText)!=null?g:""))}catch(k){u(k instanceof ge?t("error.requestTimedOut"):t("error.networkError"))}finally{f(!1)}}async function h(){u(null),f(!0);try{let g=await OS();g.ok?(a(!1),l(null)):u(ft(t,g.status,g.bodyText))}catch(g){u(g instanceof ge?t("error.requestTimedOut"):t("error.networkError"))}finally{f(!1)}}async function v(){if(i)try{await navigator.clipboard.writeText(i),s(!0)}catch(g){s(!1)}}return(0,z.jsxs)("div",{className:"settings-form",children:[(0,z.jsx)("div",{className:"f7 fw7 ttu tracked thm-text-tertiary mb2",children:t("settings.apiKeyTitle")}),(0,z.jsx)("div",{className:"mb3 lh-copy",children:t(n?"settings.apiKeyHasKey":"settings.apiKeyNoKey")}),i?(0,z.jsxs)("div",{className:"mb3",children:[(0,z.jsx)("div",{className:"mb1 lh-copy",children:t("settings.apiKeyShownOnce")}),(0,z.jsxs)("div",{className:"flex items-center",children:[(0,z.jsx)("input",{type:"text",readOnly:!0,className:"code f7 pa2 ba thm-border-primary bg-transparent thm-text-strong w-100 mw6",value:i,onFocus:g=>{g.target.select()}}),(0,z.jsx)("a",{href:"#",className:"link ml2",onClick:g=>{g.preventDefault(),v()},children:t(r?"settings.apiKeyCopied":"settings.apiKeyCopy")})]})]}):null,(0,z.jsxs)("div",{className:"flex items-center",children:[(0,z.jsx)("button",{type:"button",disabled:c,className:"ph3 pv2 input-reset thm-text-strong ba thm-border-primary bg-transparent pointer f6 dib dim",onClick:()=>{d()},children:t(n?"settings.apiKeyReset":"settings.apiKeyCreate")}),n?(0,z.jsx)("button",{type:"button",disabled:c,className:"ml3 input-reset bn bg-transparent thm-text-error pointer f6 dib dim",onClick:()=>{h()},children:t("settings.apiKeyRevoke")}):null]}),n?(0,z.jsx)("div",{className:"f7 thm-text-tertiary mt2 lh-copy",children:t("settings.apiKeyResetHint")}):null,o?(0,z.jsx)("div",{className:"thm-text-error f7 mt2",children:o}):null]})}var ui=Q(be());var jt=Q(be());var NA=180;function Xi({enabled:e,useReturnKey:t=!0,tags:n,onTagsUpdate:a,maxSuggestions:i=10}){let[l,r]=jt.default.useState(null),s=jt.default.useRef(0),o=jt.default.useRef(null),u=jt.default.useRef(null),c=jt.default.useCallback(()=>{o.current!=null&&(window.clearTimeout(o.current),o.current=null),s.current+=1},[]),f=jt.default.useCallback(()=>{c(),r(null)},[c]);jt.default.useEffect(()=>()=>{c()},[c]),jt.default.useEffect(()=>{e||f()},[e,f]);let d=jt.default.useCallback(m=>{let{value:p,selectionStart:b,selectionEnd:S}=m.target;if(a(p),!e){f();return}if(b==null||S==null||b!==S){f();return}if(CA(n,p)){f();return}let x=jS(p,b);if(x==null||x.token.length<2){f();return}let R=_A(p),N=x.token.toLowerCase(),M=R.filter(ue=>ue===N).length>1,U={query:x.token,currentTags:Array.from(new Set(R.filter(ue=>M||ue!==N)))};c(),o.current=window.setTimeout(()=>{let ue=s.current+1;s.current=ue,(async()=>{let K=await AS(U);if(ue!==s.current||K==null||u.current==null)return;let q=K.suggestions.slice(0,i);if(q.length===0){f();return}let O=RA(u.current,b);r({items:q,selectedIndex:0,tokenRange:x,anchorLeft:O.left,anchorTop:O.top})})()},NA)},[c,f,e,i,a]),h=jt.default.useCallback(m=>{let p=u.current;if(p==null||l==null)return;let b=OA(n,l.tokenRange,m);a(b.value),f(),requestAnimationFrame(()=>{p.focus(),p.setSelectionRange(b.caret,b.caret)})},[f,a,l,n]),v=jt.default.useCallback(m=>{if(m.key==="Escape"){l!=null&&(m.preventDefault(),f());return}if(m.key===" "){f();return}if(l!=null){if(m.key==="ArrowDown"){m.preventDefault(),r(p=>p==null?p:L(T({},p),{selectedIndex:(p.selectedIndex+1)%p.items.length}));return}if(m.key==="ArrowUp"){m.preventDefault(),r(p=>p==null?p:L(T({},p),{selectedIndex:(p.selectedIndex-1+p.items.length)%p.items.length}));return}if(m.key==="Tab"||m.key==="Enter"&&t){m.preventDefault();let p=l.items[l.selectedIndex];h(p.term)}}},[h,f,l,t]),g=jt.default.useCallback(m=>{if(l==null)return;let p=m.currentTarget,{selectionStart:b,selectionEnd:S,value:x}=p;if(b==null||S==null||b!==S){f();return}let R=jS(x,b);if(R==null){f();return}R.start!==l.tokenRange.start&&f()},[f,l]),k=jt.default.useCallback(m=>{r(p=>p==null?p:L(T({},p),{selectedIndex:m}))},[]);return{tagInputRef:u,suggestionState:l,closeSuggestions:f,onTagsChange:d,onTagsKeyDown:v,onTagsSelect:g,onSuggestionHover:k,onSuggestionPick:h}}function jS(e,t){let n=Math.max(0,Math.min(t,e.length)),a=n;for(;a>0&&e[a-1]!==" ";)a-=1;let i=n;for(;i<e.length&&e[i]!==" ";)i+=1;let l=e.slice(a,i).trim();return l===""?null:{token:l,start:a,end:i}}function RA(e,t){let n=window.getComputedStyle(e),a=document.createElement("div");a.style.position="absolute",a.style.visibility="hidden",a.style.whiteSpace="pre",a.style.top="0",a.style.left="0",a.style.font=n.font,a.style.fontKerning=n.fontKerning,a.style.fontFeatureSettings=n.fontFeatureSettings,a.style.fontVariantLigatures=n.fontVariantLigatures,a.style.letterSpacing=n.letterSpacing,a.style.textTransform=n.textTransform,a.style.textIndent=n.textIndent,a.style.boxSizing=n.boxSizing,a.style.padding=n.padding,a.style.border=n.border,a.style.width="".concat(String(e.clientWidth),"px");let i=document.createElement("span");i.textContent=e.value.slice(0,t),a.appendChild(i);let l=document.createElement("span");l.textContent="\u200B",a.appendChild(l),document.body.appendChild(a);let r=l.offsetLeft-e.scrollLeft+1,s=l.offsetTop-e.scrollTop+e.offsetHeight+4;return document.body.removeChild(a),{left:r,top:s}}function OA(e,t,n){let a=e.slice(0,t.start),i=e.slice(t.end).replace(/^ /,""),l="".concat(n," ");return{value:"".concat(a).concat(l).concat(i),caret:a.length+l.length}}function CA(e,t){if(e===t)return!1;let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n+=1;let a=e.length,i=t.length;for(;a>n&&i>n&&e[a-1]===t[i-1];)a-=1,i-=1;let l=e.slice(n,a),r=t.slice(n,i);return l===""&&r===""?!1:VS(l)&&VS(r)}function VS(e){return e===""||/^ *$/.test(e)}function _A(e){return e.split(" ").map(t=>t.trim().toLowerCase()).filter(t=>t!=="")}var vC=Q(be()),$n=Q(Le()),YS=80;function $i({suggestionState:e,onHover:t,onPick:n}){return(0,$n.jsx)("div",{className:"absolute z-5 thm-bg-secondary thm-text-primary ba thm-border-default br2 shadow-4 overflow-hidden f6",style:{left:e.anchorLeft,top:e.anchorTop,width:"max-content",maxWidth:"22rem"},children:e.items.map((a,i)=>{let l=i===e.selectedIndex,r=MA(a.term);return(0,$n.jsxs)("button",{type:"button",className:"flex items-center justify-between w-100 bn bg-transparent tl ph2 pv1 pointer nowrap thm-text-primary thm-hover-link-color ".concat(l?"thm-bg-selected thm-text-selected":""),onMouseEnter:()=>{t(i)},onMouseDown:s=>{s.preventDefault()},onClick:()=>{n(a.term)},title:a.term,children:[(0,$n.jsx)("span",{className:"mr2",children:DA(r,e.tokenRange.token)}),(0,$n.jsx)("span",{className:"thm-text-tertiary f6 tr",style:{minWidth:"3ch"},children:a.count})]},"".concat(a.term,"-").concat(a.count.toString()))})})}function DA(e,t){let n=e.toLocaleLowerCase(),a=t.toLocaleLowerCase(),i=n.indexOf(a);if(i<0)return e;let l=e.slice(0,i),r=e.slice(i,i+t.length),s=e.slice(i+t.length);return(0,$n.jsxs)($n.Fragment,{children:[l,(0,$n.jsx)("strong",{children:r}),s]})}function MA(e){return e.length<=YS?e:"".concat(e.slice(0,YS),"...")}var V=Q(Le());function GS({initial:e}){var q;let{t}=qe(),n=Xe(),[a,i]=ui.default.useState(e),[l,r]=ui.default.useState(e),[s,o]=ui.default.useState(!1),[u,c]=ui.default.useState(!1),[f,d]=ui.default.useState(!1),[h,v]=ui.default.useState(null),g=n.dat.suggestTags===!0,k=n.dat.suggestTagsUseReturnKey!==!1,m=ui.default.useMemo(()=>sl(n.lang,a.time),[n.lang,a.time]),{tagInputRef:p,suggestionState:b,closeSuggestions:S,onTagsChange:x,onTagsKeyDown:R,onTagsSelect:N,onSuggestionHover:D,onSuggestionPick:M}=Xi({enabled:g,useReturnKey:k,tags:l.tags,maxSuggestions:4,onTagsUpdate:O=>{r(X=>L(T({},X),{tags:O}))}});async function U(){c(!0);try{let O=await hc(l);O!=null&&r(X=>L(T({},X),{title:O}))}finally{c(!1)}}async function ue(){let O=await dc(a.bid);if(!O.ok){v(O.bodyText);return}d(!0)}let K=async O=>{O.preventDefault(),v(null);let X=L(T({},l),{tags:ra(l.tags)}),I=await pc(X);if(I.ok&&I.status>=200&&I.status<300){i(X);let pe=Rr(),Ee=Or(pe,"next"),it=document.referrer,he=window.location.origin;Ee==="closeWindow"?ol(window):Ee==="back"?it.startsWith(he)?window.location.href=it:window.location.href=he:ol(window)}else v(I.bodyText)};return f?(0,V.jsx)("p",{className:"thm-text-killed",children:t("addForm.killed")}):(0,V.jsx)("form",{onSubmit:O=>{K(O)},children:(0,V.jsx)("table",{className:"w-100",children:(0,V.jsxs)("tbody",{children:[(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{className:"w1"}),(0,V.jsxs)("td",{children:[a.bid>0?(0,V.jsxs)("div",{className:"alert",children:[t("addForm.previouslySaved"),"\xA0",(0,V.jsx)("span",{className:"link f7 dib thm-text-tertiary thm-hover-link-color pr3","data-time":a.time,title:Da(n.lang,a.time),children:m}),(0,V.jsx)("div",{className:"edit_links dib ml1",children:(0,V.jsxs)("div",{className:"delete_link di",children:[(0,V.jsx)("button",{type:"button",onClick:()=>{o(!0)},className:"delete",hidden:s,children:t("delete")}),(0,V.jsxs)("span",{className:"confirm thm-text-error",hidden:!s,children:[(0,V.jsxs)("button",{type:"button",onClick:()=>{o(!1)},children:[t("cancel"),"\xA0/\xA0"]}),(0,V.jsx)("button",{type:"button",onClick:()=>{ue()},className:"thm-text-error",children:t("destroy")})]})]})})]}):null,h?(0,V.jsx)("div",{className:"alert alert-err",children:h}):null]})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"url",children:t("addForm.url")})}),(0,V.jsx)("td",{children:(0,V.jsx)("input",{type:"url",id:"url",className:"w-100 mv1",required:!0,name:"url",autoFocus:a.url==="",value:l.url,onChange:O=>{r(X=>L(T({},X),{url:O.target.value}))}})})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"title",children:t("bmark.title")})}),(0,V.jsxs)("td",{className:"flex",children:[(0,V.jsx)("input",{type:"text",id:"title",className:"w-100 mv1 flex-auto",name:"title",value:l.title,onChange:O=>{r(X=>L(T({},X),{title:O.target.value}))}}),(0,V.jsx)("button",{disabled:u,type:"button",onClick:()=>{U()},className:"ml2 input-reset ba thm-border-primary pointer f6 di dim pa1 ma1 mr0".concat(u?" thm-bg-disabled":""),children:t("fetch")})]})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"description",children:t("bmark.description")})}),(0,V.jsx)("td",{children:(0,V.jsx)("textarea",{className:"w-100 mt1 thm-text-secondary",id:"description",name:"description",rows:4,value:l.description,onChange:O=>{r(X=>L(T({},X),{description:O.target.value}))}})})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"tags",children:t("bmark.tags")})}),(0,V.jsx)("td",{children:(0,V.jsxs)("div",{className:"relative",children:[(0,V.jsx)("input",{ref:p,type:"text",id:"tags",className:"w-100 mv1",name:"tags",autoComplete:"off",autoCapitalize:"off",autoFocus:a.url!=="",value:l.tags,onChange:x,onKeyDown:R,onClick:N,onSelect:N,onBlur:()=>{window.setTimeout(()=>{S()},0)}}),b!=null?(0,V.jsx)($i,{suggestionState:b,onHover:D,onPick:M}):null]})})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"private",children:t("bmark.private")})}),(0,V.jsxs)("td",{children:[(0,V.jsx)("div",{className:"mr4 dib",children:(0,V.jsx)("input",{type:"checkbox",id:"private",className:"private pointer",name:"private",checked:l.private,onChange:O=>{r(X=>T(L(T({},X),{private:O.target.checked}),n.dat.archiveBackendEnabled&&l.archiveRequested&&O.target.checked?{archiveRequested:!1}:{}))}})}),!(a.bid>0)&&n.dat.archiveBackendEnabled?(0,V.jsxs)("div",{className:"dib ".concat(l.private?"o-50":""),title:l.private?t("addForm.archiveUnavailable"):void 0,children:[(0,V.jsx)("label",{className:"mr2 di",htmlFor:"archiveRequested",children:t("archive")}),(0,V.jsx)("input",{type:"checkbox",id:"archiveRequested",className:"archive pointer ml2",name:"archiveRequested",disabled:l.private,checked:(q=l.archiveRequested)!=null?q:!1,onChange:O=>{r(X=>L(T({},X),{archiveRequested:O.target.checked}))}})]}):null]})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{children:(0,V.jsx)("label",{htmlFor:"toread",children:t("addForm.readLater")})}),(0,V.jsx)("td",{children:(0,V.jsx)("input",{type:"checkbox",id:"toread",className:"toread pointer",name:"toread",checked:l.toread,onChange:O=>{r(X=>L(T({},X),{toread:O.target.checked}))}})})]}),(0,V.jsxs)("tr",{children:[(0,V.jsx)("td",{}),(0,V.jsx)("td",{children:(0,V.jsx)("input",{type:"submit",className:"ph3 pv2 input-reset thm-text-strong ba thm-border-primary bg-transparent pointer f6 dib mt1 dim",value:a.bid>0?t("addForm.update"):t("addForm.add")})})]})]})})})}var Rh=Q(be());var KS=e=>{let t,n=new Set,a=(u,c)=>{let f=typeof u=="function"?u(t):u;if(!Object.is(f,t)){let d=t;t=(c!=null?c:typeof f!="object"||f===null)?f:Object.assign({},t,f),n.forEach(h=>h(t,d))}},i=()=>t,s={setState:a,getState:i,getInitialState:()=>o,subscribe:u=>(n.add(u),()=>n.delete(u))},o=t=e(a,i,s);return s},XS=(e=>e?KS(e):KS);var Ks=Q(be(),1);var zA=e=>e;function LA(e,t=zA){let n=Ks.default.useSyncExternalStore(e.subscribe,Ks.default.useCallback(()=>t(e.getState()),[e,t]),Ks.default.useCallback(()=>t(e.getInitialState()),[e,t]));return Ks.default.useDebugValue(n),n}var $S=e=>{let t=XS(e),n=a=>LA(t,a);return Object.assign(n,t),n},bc=(e=>e?$S(e):$S);var Qi=bc(e=>({bmarks:[],setAll:t=>{e({bmarks:t})},removeById:t=>{e(n=>({bmarks:n.bmarks.filter(a=>a.bid!==t)}))},upsert:t=>{e(n=>({bmarks:n.bmarks.map(a=>a.bid===t.bid?t:a)}))}}));var bn=Q(be());function QS(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function UA(e){if(Array.isArray(e))return e}function BA(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var a,i,l,r,s=[],o=!0,u=!1;try{if(l=(n=n.call(e)).next,t!==0)for(;!(o=(a=l.call(n)).done)&&(s.push(a.value),s.length!==t);o=!0);}catch(c){u=!0,i=c}finally{try{if(!o&&n.return!=null&&(r=n.return(),Object(r)!==r))return}finally{if(u)throw i}}return s}}function HA(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function qA(e,t){return UA(e)||BA(e,t)||jA(e,t)||HA()}function jA(e,t){if(e){if(typeof e=="string")return QS(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?QS(e,t):void 0}}var r1=Object.entries,ZS=Object.setPrototypeOf,VA=Object.isFrozen,YA=Object.getPrototypeOf,GA=Object.getOwnPropertyDescriptor,Ct=Object.freeze,yn=Object.seal,fr=Object.create,s1=typeof Reflect<"u"&&Reflect,hh=s1.apply,mh=s1.construct;Ct||(Ct=function(t){return t});yn||(yn=function(t){return t});hh||(hh=function(t,n){for(var a=arguments.length,i=new Array(a>2?a-2:0),l=2;l<a;l++)i[l-2]=arguments[l];return t.apply(n,i)});mh||(mh=function(t){for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return new t(...a)});var or=We(Array.prototype.forEach),KA=We(Array.prototype.lastIndexOf),FS=We(Array.prototype.pop),ur=We(Array.prototype.push),XA=We(Array.prototype.splice),Ot=Array.isArray,Qs=We(String.prototype.toLowerCase),uh=We(String.prototype.toString),JS=We(String.prototype.match),cr=We(String.prototype.replace),IS=We(String.prototype.indexOf),$A=We(String.prototype.trim),QA=We(Number.prototype.toString),ZA=We(Boolean.prototype.toString),PS=typeof BigInt>"u"?null:We(BigInt.prototype.toString),WS=typeof Symbol>"u"?null:We(Symbol.prototype.toString),Ye=We(Object.prototype.hasOwnProperty),Xs=We(Object.prototype.toString),bt=We(RegExp.prototype.test),$s=FA(TypeError);function We(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,a=new Array(n>1?n-1:0),i=1;i<n;i++)a[i-1]=arguments[i];return hh(e,t,a)}}function FA(e){return function(){for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return mh(e,n)}}function ee(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Qs;if(ZS&&ZS(e,null),!Ot(t))return e;let a=t.length;for(;a--;){let i=t[a];if(typeof i=="string"){let l=n(i);l!==i&&(VA(t)||(t[a]=l),i=l)}e[i]=!0}return e}function JA(e){for(let t=0;t<e.length;t++)Ye(e,t)||(e[t]=null);return e}function Et(e){let t=fr(null);for(let a of r1(e)){var n=qA(a,2);let i=n[0],l=n[1];Ye(e,i)&&(Ot(l)?t[i]=JA(l):l&&typeof l=="object"&&l.constructor===Object?t[i]=Et(l):t[i]=l)}return t}function IA(e){switch(typeof e){case"string":return e;case"number":return QA(e);case"boolean":return ZA(e);case"bigint":return PS?PS(e):"0";case"symbol":return WS?WS(e):"Symbol()";case"undefined":return Xs(e);case"function":case"object":{if(e===null)return Xs(e);let t=e,n=Zn(t,"toString");if(typeof n=="function"){let a=n(t);return typeof a=="string"?a:Xs(a)}return Xs(e)}default:return Xs(e)}}function Zn(e,t){for(;e!==null;){let a=GA(e,t);if(a){if(a.get)return We(a.get);if(typeof a.value=="function")return We(a.value)}e=YA(e)}function n(){return null}return n}function PA(e){try{return bt(e,""),!0}catch(t){return!1}}var e1=Ct(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ch=Ct(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),fh=Ct(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),WA=Ct(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),dh=Ct(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),ew=Ct(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),t1=Ct(["#text"]),n1=Ct(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),ph=Ct(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),a1=Ct(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),vc=Ct(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),tw=yn(/{{[\w\W]*|^[\w\W]*}}/g),nw=yn(/<%[\w\W]*|^[\w\W]*%>/g),aw=yn(/\${[\w\W]*/g),iw=yn(/^data-[\-\w.\u00B7-\uFFFF]+$/),lw=yn(/^aria-[\-\w]+$/),i1=yn(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),rw=yn(/^(?:\w+script|data):/i),sw=yn(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ow=yn(/^html$/i),uw=yn(/^[a-z][.\w]*(-[.\w]+)+$/i),Qn={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},cw=function(){return typeof window>"u"?null:window},fw=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let a=null,i="data-tt-policy-suffix";n&&n.hasAttribute(i)&&(a=n.getAttribute(i));let l="dompurify"+(a?"#"+a:"");try{return t.createPolicy(l,{createHTML(r){return r},createScriptURL(r){return r}})}catch(r){return console.warn("TrustedTypes policy "+l+" could not be created."),null}},l1=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function o1(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:cw(),t=j=>o1(j);if(t.version="3.4.7",t.removed=[],!e||!e.document||e.document.nodeType!==Qn.document||!e.Element)return t.isSupported=!1,t;let n=e.document,a=n,i=a.currentScript;e.DocumentFragment;let l=e.HTMLTemplateElement,r=e.Node,s=e.Element,o=e.NodeFilter,u=e.NamedNodeMap;u===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let c=e.DOMParser,f=e.trustedTypes,d=s.prototype,h=Zn(d,"cloneNode"),v=Zn(d,"remove"),g=Zn(d,"nextSibling"),k=Zn(d,"childNodes"),m=Zn(d,"parentNode"),p=Zn(d,"shadowRoot"),b=Zn(d,"attributes"),S=r&&r.prototype?Zn(r.prototype,"nodeType"):null,x=r&&r.prototype?Zn(r.prototype,"nodeName"):null;if(typeof l=="function"){let j=n.createElement("template");j.content&&j.content.ownerDocument&&(n=j.content.ownerDocument)}let R,N="",D=n,M=D.implementation,U=D.createNodeIterator,ue=D.createDocumentFragment,K=D.getElementsByTagName,q=a.importNode,O=l1();t.isSupported=typeof r1=="function"&&typeof m=="function"&&M&&M.createHTMLDocument!==void 0;let X=tw,I=nw,pe=aw,Ee=iw,it=lw,he=rw,ye=sw,et=uw,Ze=i1,Te=null,_n=ee({},[...e1,...ch,...fh,...dh,...t1]),Re=null,Oa=ee({},[...n1,...ph,...a1,...vc]),Oe=Object.seal(fr(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Pn=null,Wn=null,Yt=Object.seal(fr(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),di=!0,Y=!0,se=!1,St=!0,nn=!1,ea=!0,Dn=!1,ta=!1,mr=!1,_t=!1,pi=!1,hi=!1,gr=!0,yr=!1,Ue="user-content-",an=!0,vn=!1,Sn={},Gt=null,na=ee({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Mh=null,zh=ee({},["audio","video","img","source","image","track"]),Oc=null,Lh=ee({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ps="http://www.w3.org/1998/Math/MathML",Ws="http://www.w3.org/2000/svg",Mn="http://www.w3.org/1999/xhtml",Wi=Mn,Cc=!1,_c=null,Y1=ee({},[Ps,Ws,Mn],uh),Dc=ee({},["mi","mo","mn","ms","mtext"]),Mc=ee({},["annotation-xml"]),G1=ee({},["title","style","font","a","script"]),br=null,K1=["application/xhtml+xml","text/html"],X1="text/html",Ke=null,el=null,$1=n.createElement("form"),Uh=function(y){return y instanceof RegExp||y instanceof Function},zc=function(){let y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(el&&el===y)return;(!y||typeof y!="object")&&(y={}),y=Et(y),br=K1.indexOf(y.PARSER_MEDIA_TYPE)===-1?X1:y.PARSER_MEDIA_TYPE,Ke=br==="application/xhtml+xml"?uh:Qs,Te=Ye(y,"ALLOWED_TAGS")&&Ot(y.ALLOWED_TAGS)?ee({},y.ALLOWED_TAGS,Ke):_n,Re=Ye(y,"ALLOWED_ATTR")&&Ot(y.ALLOWED_ATTR)?ee({},y.ALLOWED_ATTR,Ke):Oa,_c=Ye(y,"ALLOWED_NAMESPACES")&&Ot(y.ALLOWED_NAMESPACES)?ee({},y.ALLOWED_NAMESPACES,uh):Y1,Oc=Ye(y,"ADD_URI_SAFE_ATTR")&&Ot(y.ADD_URI_SAFE_ATTR)?ee(Et(Lh),y.ADD_URI_SAFE_ATTR,Ke):Lh,Mh=Ye(y,"ADD_DATA_URI_TAGS")&&Ot(y.ADD_DATA_URI_TAGS)?ee(Et(zh),y.ADD_DATA_URI_TAGS,Ke):zh,Gt=Ye(y,"FORBID_CONTENTS")&&Ot(y.FORBID_CONTENTS)?ee({},y.FORBID_CONTENTS,Ke):na,Pn=Ye(y,"FORBID_TAGS")&&Ot(y.FORBID_TAGS)?ee({},y.FORBID_TAGS,Ke):Et({}),Wn=Ye(y,"FORBID_ATTR")&&Ot(y.FORBID_ATTR)?ee({},y.FORBID_ATTR,Ke):Et({}),Sn=Ye(y,"USE_PROFILES")?y.USE_PROFILES&&typeof y.USE_PROFILES=="object"?Et(y.USE_PROFILES):y.USE_PROFILES:!1,di=y.ALLOW_ARIA_ATTR!==!1,Y=y.ALLOW_DATA_ATTR!==!1,se=y.ALLOW_UNKNOWN_PROTOCOLS||!1,St=y.ALLOW_SELF_CLOSE_IN_ATTR!==!1,nn=y.SAFE_FOR_TEMPLATES||!1,ea=y.SAFE_FOR_XML!==!1,Dn=y.WHOLE_DOCUMENT||!1,_t=y.RETURN_DOM||!1,pi=y.RETURN_DOM_FRAGMENT||!1,hi=y.RETURN_TRUSTED_TYPE||!1,mr=y.FORCE_BODY||!1,gr=y.SANITIZE_DOM!==!1,yr=y.SANITIZE_NAMED_PROPS||!1,an=y.KEEP_CONTENT!==!1,vn=y.IN_PLACE||!1,Ze=PA(y.ALLOWED_URI_REGEXP)?y.ALLOWED_URI_REGEXP:i1,Wi=typeof y.NAMESPACE=="string"?y.NAMESPACE:Mn,Dc=Ye(y,"MATHML_TEXT_INTEGRATION_POINTS")&&y.MATHML_TEXT_INTEGRATION_POINTS&&typeof y.MATHML_TEXT_INTEGRATION_POINTS=="object"?Et(y.MATHML_TEXT_INTEGRATION_POINTS):ee({},["mi","mo","mn","ms","mtext"]),Mc=Ye(y,"HTML_INTEGRATION_POINTS")&&y.HTML_INTEGRATION_POINTS&&typeof y.HTML_INTEGRATION_POINTS=="object"?Et(y.HTML_INTEGRATION_POINTS):ee({},["annotation-xml"]);let A=Ye(y,"CUSTOM_ELEMENT_HANDLING")&&y.CUSTOM_ELEMENT_HANDLING&&typeof y.CUSTOM_ELEMENT_HANDLING=="object"?Et(y.CUSTOM_ELEMENT_HANDLING):fr(null);if(Oe=fr(null),Ye(A,"tagNameCheck")&&Uh(A.tagNameCheck)&&(Oe.tagNameCheck=A.tagNameCheck),Ye(A,"attributeNameCheck")&&Uh(A.attributeNameCheck)&&(Oe.attributeNameCheck=A.attributeNameCheck),Ye(A,"allowCustomizedBuiltInElements")&&typeof A.allowCustomizedBuiltInElements=="boolean"&&(Oe.allowCustomizedBuiltInElements=A.allowCustomizedBuiltInElements),nn&&(Y=!1),pi&&(_t=!0),Sn&&(Te=ee({},t1),Re=fr(null),Sn.html===!0&&(ee(Te,e1),ee(Re,n1)),Sn.svg===!0&&(ee(Te,ch),ee(Re,ph),ee(Re,vc)),Sn.svgFilters===!0&&(ee(Te,fh),ee(Re,ph),ee(Re,vc)),Sn.mathMl===!0&&(ee(Te,dh),ee(Re,a1),ee(Re,vc))),Yt.tagCheck=null,Yt.attributeCheck=null,Ye(y,"ADD_TAGS")&&(typeof y.ADD_TAGS=="function"?Yt.tagCheck=y.ADD_TAGS:Ot(y.ADD_TAGS)&&(Te===_n&&(Te=Et(Te)),ee(Te,y.ADD_TAGS,Ke))),Ye(y,"ADD_ATTR")&&(typeof y.ADD_ATTR=="function"?Yt.attributeCheck=y.ADD_ATTR:Ot(y.ADD_ATTR)&&(Re===Oa&&(Re=Et(Re)),ee(Re,y.ADD_ATTR,Ke))),Ye(y,"ADD_URI_SAFE_ATTR")&&Ot(y.ADD_URI_SAFE_ATTR)&&ee(Oc,y.ADD_URI_SAFE_ATTR,Ke),Ye(y,"FORBID_CONTENTS")&&Ot(y.FORBID_CONTENTS)&&(Gt===na&&(Gt=Et(Gt)),ee(Gt,y.FORBID_CONTENTS,Ke)),Ye(y,"ADD_FORBID_CONTENTS")&&Ot(y.ADD_FORBID_CONTENTS)&&(Gt===na&&(Gt=Et(Gt)),ee(Gt,y.ADD_FORBID_CONTENTS,Ke)),an&&(Te["#text"]=!0),Dn&&ee(Te,["html","head","body"]),Te.table&&(ee(Te,["tbody"]),delete Pn.tbody),y.TRUSTED_TYPES_POLICY){if(typeof y.TRUSTED_TYPES_POLICY.createHTML!="function")throw $s('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof y.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw $s('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');R=y.TRUSTED_TYPES_POLICY,N=R.createHTML("")}else R===void 0&&(R=fw(f,i)),R!==null&&typeof N=="string"&&(N=R.createHTML(""));(O.uponSanitizeElement.length>0||O.uponSanitizeAttribute.length>0)&&Te===_n&&(Te=Et(Te)),O.uponSanitizeAttribute.length>0&&Re===Oa&&(Re=Et(Re)),Ct&&Ct(y),el=y},Bh=ee({},[...ch,...fh,...WA]),Hh=ee({},[...dh,...ew]),Q1=function(y){let A=m(y);(!A||!A.tagName)&&(A={namespaceURI:Wi,tagName:"template"});let B=Qs(y.tagName),me=Qs(A.tagName);return _c[y.namespaceURI]?y.namespaceURI===Ws?A.namespaceURI===Mn?B==="svg":A.namespaceURI===Ps?B==="svg"&&(me==="annotation-xml"||Dc[me]):!!Bh[B]:y.namespaceURI===Ps?A.namespaceURI===Mn?B==="math":A.namespaceURI===Ws?B==="math"&&Mc[me]:!!Hh[B]:y.namespaceURI===Mn?A.namespaceURI===Ws&&!Mc[me]||A.namespaceURI===Ps&&!Dc[me]?!1:!Hh[B]&&(G1[B]||!Bh[B]):!!(br==="application/xhtml+xml"&&_c[y.namespaceURI]):!1},Tn=function(y){ur(t.removed,{element:y});try{m(y).removeChild(y)}catch(A){v(y)}},mi=function(y,A){try{ur(t.removed,{attribute:A.getAttributeNode(y),from:A})}catch(B){ur(t.removed,{attribute:null,from:A})}if(A.removeAttribute(y),y==="is")if(_t||pi)try{Tn(A)}catch(B){}else try{A.setAttribute(y,"")}catch(B){}},qh=function(y){let A=null,B=null;if(mr)y="<remove></remove>"+y;else{let Ce=JS(y,/^[\r\n\t ]+/);B=Ce&&Ce[0]}br==="application/xhtml+xml"&&Wi===Mn&&(y='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+y+"</body></html>");let me=R?R.createHTML(y):y;if(Wi===Mn)try{A=new c().parseFromString(me,br)}catch(Ce){}if(!A||!A.documentElement){A=M.createDocument(Wi,"template",null);try{A.documentElement.innerHTML=Cc?N:me}catch(Ce){}}let ie=A.body||A.documentElement;return y&&B&&ie.insertBefore(n.createTextNode(B),ie.childNodes[0]||null),Wi===Mn?K.call(A,Dn?"html":"body")[0]:Dn?A.documentElement:ie},jh=function(y){return U.call(y.ownerDocument||y,y,o.SHOW_ELEMENT|o.SHOW_COMMENT|o.SHOW_TEXT|o.SHOW_PROCESSING_INSTRUCTION|o.SHOW_CDATA_SECTION,null)},Vh=function(y){y.normalize();let A=U.call(y.ownerDocument||y,y,o.SHOW_TEXT|o.SHOW_COMMENT|o.SHOW_CDATA_SECTION|o.SHOW_PROCESSING_INSTRUCTION,null),B=A.nextNode();for(;B;){let me=B.data;or([X,I,pe],ie=>{me=cr(me,ie," ")}),B.data=me,B=A.nextNode()}},eo=function(y){let A=x?x(y):null;return typeof A!="string"||Ke(A)!=="form"?!1:typeof y.nodeName!="string"||typeof y.textContent!="string"||typeof y.removeChild!="function"||y.attributes!==b(y)||typeof y.removeAttribute!="function"||typeof y.setAttribute!="function"||typeof y.namespaceURI!="string"||typeof y.insertBefore!="function"||typeof y.hasChildNodes!="function"||y.nodeType!==S(y)||y.childNodes!==k(y)},vr=function(y){if(!S||typeof y!="object"||y===null)return!1;try{return S(y)===Qn.documentFragment}catch(A){return!1}},to=function(y){if(!S||typeof y!="object"||y===null)return!1;try{return typeof S(y)=="number"}catch(A){return!1}};function aa(j,y,A){or(j,B=>{B.call(t,y,A,el)})}let Yh=function(y){let A=null;if(aa(O.beforeSanitizeElements,y,null),eo(y))return Tn(y),!0;let B=Ke(y.nodeName);if(aa(O.uponSanitizeElement,y,{tagName:B,allowedTags:Te}),ea&&y.hasChildNodes()&&!to(y.firstElementChild)&&bt(/<[/\w!]/g,y.innerHTML)&&bt(/<[/\w!]/g,y.textContent)||ea&&y.namespaceURI===Mn&&B==="style"&&to(y.firstElementChild)||y.nodeType===Qn.progressingInstruction||ea&&y.nodeType===Qn.comment&&bt(/<[/\w]/g,y.data))return Tn(y),!0;if(Pn[B]||!(Yt.tagCheck instanceof Function&&Yt.tagCheck(B))&&!Te[B]){if(!Pn[B]&&Kh(B)&&(Oe.tagNameCheck instanceof RegExp&&bt(Oe.tagNameCheck,B)||Oe.tagNameCheck instanceof Function&&Oe.tagNameCheck(B)))return!1;if(an&&!Gt[B]){let ie=m(y),Ce=k(y);if(Ce&&ie){let ln=Ce.length;for(let zn=ln-1;zn>=0;--zn){let xn=h(Ce[zn],!0);ie.insertBefore(xn,g(y))}}}return Tn(y),!0}return(S?S(y):y.nodeType)===Qn.element&&!Q1(y)||(B==="noscript"||B==="noembed"||B==="noframes")&&bt(/<\/no(script|embed|frames)/i,y.innerHTML)?(Tn(y),!0):(nn&&y.nodeType===Qn.text&&(A=y.textContent,or([X,I,pe],ie=>{A=cr(A,ie," ")}),y.textContent!==A&&(ur(t.removed,{element:y.cloneNode()}),y.textContent=A)),aa(O.afterSanitizeElements,y,null),!1)},Gh=function(y,A,B){if(Wn[A]||gr&&(A==="id"||A==="name")&&(B in n||B in $1))return!1;let me=Re[A]||Yt.attributeCheck instanceof Function&&Yt.attributeCheck(A,y);if(!(Y&&!Wn[A]&&bt(Ee,A))){if(!(di&&bt(it,A))){if(!me||Wn[A]){if(!(Kh(y)&&(Oe.tagNameCheck instanceof RegExp&&bt(Oe.tagNameCheck,y)||Oe.tagNameCheck instanceof Function&&Oe.tagNameCheck(y))&&(Oe.attributeNameCheck instanceof RegExp&&bt(Oe.attributeNameCheck,A)||Oe.attributeNameCheck instanceof Function&&Oe.attributeNameCheck(A,y))||A==="is"&&Oe.allowCustomizedBuiltInElements&&(Oe.tagNameCheck instanceof RegExp&&bt(Oe.tagNameCheck,B)||Oe.tagNameCheck instanceof Function&&Oe.tagNameCheck(B))))return!1}else if(!Oc[A]){if(!bt(Ze,cr(B,ye,""))){if(!((A==="src"||A==="xlink:href"||A==="href")&&y!=="script"&&IS(B,"data:")===0&&Mh[y])){if(!(se&&!bt(he,cr(B,ye,"")))){if(B)return!1}}}}}}return!0},Z1=ee({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Kh=function(y){return!Z1[Qs(y)]&&bt(et,y)},Xh=function(y){aa(O.beforeSanitizeAttributes,y,null);let A=y.attributes;if(!A||eo(y))return;let B={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Re,forceKeepAttr:void 0},me=A.length;for(;me--;){let ie=A[me],Ce=ie.name,ln=ie.namespaceURI,zn=ie.value,xn=Ke(Ce),Lc=zn,lt=Ce==="value"?Lc:$A(Lc);if(B.attrName=xn,B.attrValue=lt,B.keepAttr=!0,B.forceKeepAttr=void 0,aa(O.uponSanitizeAttribute,y,B),lt=B.attrValue,yr&&(xn==="id"||xn==="name")&&IS(lt,Ue)!==0&&(mi(Ce,y),lt=Ue+lt),ea&&bt(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,lt)){mi(Ce,y);continue}if(xn==="attributename"&&JS(lt,"href")){mi(Ce,y);continue}if(B.forceKeepAttr)continue;if(!B.keepAttr){mi(Ce,y);continue}if(!St&&bt(/\/>/i,lt)){mi(Ce,y);continue}nn&&or([X,I,pe],Qh=>{lt=cr(lt,Qh," ")});let $h=Ke(y.nodeName);if(!Gh($h,xn,lt)){mi(Ce,y);continue}if(R&&typeof f=="object"&&typeof f.getAttributeType=="function"&&!ln)switch(f.getAttributeType($h,xn)){case"TrustedHTML":{lt=R.createHTML(lt);break}case"TrustedScriptURL":{lt=R.createScriptURL(lt);break}}if(lt!==Lc)try{ln?y.setAttributeNS(ln,Ce,lt):y.setAttribute(Ce,lt),eo(y)?Tn(y):FS(t.removed)}catch(Qh){mi(Ce,y)}}aa(O.afterSanitizeAttributes,y,null)},no=function(y){let A=null,B=jh(y);for(aa(O.beforeSanitizeShadowDOM,y,null);A=B.nextNode();)if(aa(O.uponSanitizeShadowNode,A,null),Yh(A),Xh(A),vr(A.content)&&no(A.content),(S?S(A):A.nodeType)===Qn.element){let ie=p?p(A):A.shadowRoot;vr(ie)&&(tl(ie),no(ie))}aa(O.afterSanitizeShadowDOM,y,null)},tl=function(y){let A=S?S(y):y.nodeType;if(A===Qn.element){let ie=p?p(y):y.shadowRoot;vr(ie)&&(tl(ie),no(ie))}let B=k?k(y):y.childNodes;if(!B)return;let me=[];or(B,ie=>{ur(me,ie)});for(let ie of me)tl(ie);if(A===Qn.element){let ie=x?x(y):null;if(typeof ie=="string"&&Ke(ie)==="template"){let Ce=y.content;vr(Ce)&&tl(Ce)}}};return t.sanitize=function(j){let y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},A=null,B=null,me=null,ie=null;if(Cc=!j,Cc&&(j="<!-->"),typeof j!="string"&&!to(j)&&(j=IA(j),typeof j!="string"))throw $s("dirty is not a string, aborting");if(!t.isSupported)return j;if(ta||zc(y),t.removed=[],typeof j=="string"&&(vn=!1),vn){let zn=x?x(j):j.nodeName;if(typeof zn=="string"){let xn=Ke(zn);if(!Te[xn]||Pn[xn])throw $s("root node is forbidden and cannot be sanitized in-place")}if(eo(j))throw $s("root node is clobbered and cannot be sanitized in-place");tl(j)}else if(to(j))A=qh("<!---->"),B=A.ownerDocument.importNode(j,!0),B.nodeType===Qn.element&&B.nodeName==="BODY"||B.nodeName==="HTML"?A=B:A.appendChild(B),tl(B);else{if(!_t&&!nn&&!Dn&&j.indexOf("<")===-1)return R&&hi?R.createHTML(j):j;if(A=qh(j),!A)return _t?null:hi?N:""}A&&mr&&Tn(A.firstChild);let Ce=jh(vn?j:A);for(;me=Ce.nextNode();)Yh(me),Xh(me),vr(me.content)&&no(me.content);if(vn)return nn&&Vh(j),j;if(_t){if(nn&&Vh(A),pi)for(ie=ue.call(A.ownerDocument);A.firstChild;)ie.appendChild(A.firstChild);else ie=A;return(Re.shadowroot||Re.shadowrootmode)&&(ie=q.call(a,ie,!0)),ie}let ln=Dn?A.outerHTML:A.innerHTML;return Dn&&Te["!doctype"]&&A.ownerDocument&&A.ownerDocument.doctype&&A.ownerDocument.doctype.name&&bt(ow,A.ownerDocument.doctype.name)&&(ln="<!DOCTYPE "+A.ownerDocument.doctype.name+">\n"+ln),nn&&or([X,I,pe],zn=>{ln=cr(ln,zn," ")}),R&&hi?R.createHTML(ln):ln},t.setConfig=function(){let j=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};zc(j),ta=!0},t.clearConfig=function(){el=null,ta=!1},t.isValidAttribute=function(j,y,A){el||zc({});let B=Ke(j),me=Ke(y);return Gh(B,me,A)},t.addHook=function(j,y){typeof y=="function"&&ur(O[j],y)},t.removeHook=function(j,y){if(y!==void 0){let A=KA(O[j],y);return A===-1?void 0:XA(O[j],A,1)[0]}return FS(O[j])},t.removeHooks=function(j){O[j]=[]},t.removeAllHooks=function(){O=l1()},t}var u1=o1();function vh(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Ji=vh();function y1(e){Ji=e}var Zi={exec:()=>null};function dr(e){let t=[];return n=>{let a=Math.max(0,Math.min(3,n-1)),i=t[a];return i||(i=e(a),t[a]=i),i}}function oe(e,t=""){let n=typeof e=="string"?e:e.source,a={replace:(i,l)=>{let r=typeof l=="string"?l:l.source;return r=r.replace(At.caret,"$1"),n=n.replace(i,r),a},getRegex:()=>new RegExp(n,t)};return a}var dw=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch(t){return!1}})(),At={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp("^( {0,3}".concat(e,")((?:[ ][^\\n]*)?(?:\\n|$))")),nextBulletRegex:dr(e=>new RegExp("^ {0,".concat(e,"}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))"))),hrRegex:dr(e=>new RegExp("^ {0,".concat(e,"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"))),fencesBeginRegex:dr(e=>new RegExp("^ {0,".concat(e,"}(?:```|~~~)"))),headingBeginRegex:dr(e=>new RegExp("^ {0,".concat(e,"}#"))),htmlBeginRegex:dr(e=>new RegExp("^ {0,".concat(e,"}<(?:[a-z].*>|!--)"),"i")),blockquoteBeginRegex:dr(e=>new RegExp("^ {0,".concat(e,"}>")))},pw=/^(?:[ \t]*(?:\n|$))+/,hw=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,mw=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Js=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,gw=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Sh=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,b1=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,v1=oe(b1).replace(/bull/g,Sh).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),yw=oe(b1).replace(/bull/g,Sh).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Th=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,bw=/^[^\n]+/,xh=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,vw=oe(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",xh).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Sw=oe(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Sh).getRegex(),Ac="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",kh=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Tw=oe("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",kh).replace("tag",Ac).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),S1=oe(Th).replace("hr",Js).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ac).getRegex(),xw=oe(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",S1).getRegex(),Eh={blockquote:xw,code:hw,def:vw,fences:mw,heading:gw,hr:Js,html:Tw,lheading:v1,list:Sw,newline:pw,paragraph:S1,table:Zi,text:bw},c1=oe("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Js).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ac).getRegex(),kw=L(T({},Eh),{lheading:yw,table:c1,paragraph:oe(Th).replace("hr",Js).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",c1).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ac).getRegex()}),Ew=L(T({},Eh),{html:oe("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",kh).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Zi,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:oe(Th).replace("hr",Js).replace("heading"," *#{1,6} *[^\n]").replace("lheading",v1).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()}),Aw=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,ww=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,T1=/^( {2,}|\\)\n(?!\s*$)/,Nw=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,pr=/[\p{P}\p{S}]/u,wc=/[\s\p{P}\p{S}]/u,Ah=/[^\s\p{P}\p{S}]/u,Rw=oe(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,wc).getRegex(),x1=/(?!~)[\p{P}\p{S}]/u,Ow=/(?!~)[\s\p{P}\p{S}]/u,Cw=/(?:[^\s\p{P}\p{S}]|~)/u,_w=oe(/link|precode-code|html/,"g").replace("link",new RegExp("\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)")).replace("precode-",dw?"(?<!`)()":"(^^|[^`])").replace("code",new RegExp("(?<b>`+)[^`]+\\k<b>(?!`)")).replace("html",/<(?! )[^<>]*?>/).getRegex(),k1=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Dw=oe(k1,"u").replace(/punct/g,pr).getRegex(),Mw=oe(k1,"u").replace(/punct/g,x1).getRegex(),E1="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",zw=oe(E1,"gu").replace(/notPunctSpace/g,Ah).replace(/punctSpace/g,wc).replace(/punct/g,pr).getRegex(),Lw=oe(E1,"gu").replace(/notPunctSpace/g,Cw).replace(/punctSpace/g,Ow).replace(/punct/g,x1).getRegex(),Uw=oe("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ah).replace(/punctSpace/g,wc).replace(/punct/g,pr).getRegex(),Bw=oe(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,pr).getRegex(),Hw="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",qw=oe(Hw,"gu").replace(/notPunctSpace/g,Ah).replace(/punctSpace/g,wc).replace(/punct/g,pr).getRegex(),jw=oe(/\\(punct)/,"gu").replace(/punct/g,pr).getRegex(),Vw=oe(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Yw=oe(kh).replace("(?:-->|$)","-->").getRegex(),Gw=oe("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Yw).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),xc=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Kw=oe(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",xc).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),A1=oe(/^!?\[(label)\]\[(ref)\]/).replace("label",xc).replace("ref",xh).getRegex(),w1=oe(/^!?\[(ref)\](?:\[\])?/).replace("ref",xh).getRegex(),Xw=oe("reflink|nolink(?!\\()","g").replace("reflink",A1).replace("nolink",w1).getRegex(),f1=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,wh={_backpedal:Zi,anyPunctuation:jw,autolink:Vw,blockSkip:_w,br:T1,code:ww,del:Zi,delLDelim:Zi,delRDelim:Zi,emStrongLDelim:Dw,emStrongRDelimAst:zw,emStrongRDelimUnd:Uw,escape:Aw,link:Kw,nolink:w1,punctuation:Rw,reflink:A1,reflinkSearch:Xw,tag:Gw,text:Nw,url:Zi},$w=L(T({},wh),{link:oe(/^!?\[(label)\]\((.*?)\)/).replace("label",xc).getRegex(),reflink:oe(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",xc).getRegex()}),gh=L(T({},wh),{emStrongRDelimAst:Lw,emStrongLDelim:Mw,delLDelim:Bw,delRDelim:qw,url:oe(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",f1).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:oe(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",f1).getRegex()}),Qw=L(T({},gh),{br:oe(T1).replace("{2,}","*").getRegex(),text:oe(gh.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()}),Sc={normal:Eh,gfm:kw,pedantic:Ew},Zs={normal:wh,gfm:gh,breaks:Qw,pedantic:$w},Zw={"&":"&","<":"<",">":">",'"':""","'":"'"},d1=e=>Zw[e];function Fn(e,t){if(t){if(At.escapeTest.test(e))return e.replace(At.escapeReplace,d1)}else if(At.escapeTestNoEncode.test(e))return e.replace(At.escapeReplaceNoEncode,d1);return e}function p1(e){try{e=encodeURI(e).replace(At.percentDecode,"%")}catch(t){return null}return e}function h1(e,t){var l;let n=e.replace(At.findPipe,(r,s,o)=>{let u=!1,c=s;for(;--c>=0&&o[c]==="\\";)u=!u;return u?"|":" |"}),a=n.split(At.splitPipe),i=0;if(a[0].trim()||a.shift(),a.length>0&&!((l=a.at(-1))!=null&&l.trim())&&a.pop(),t)if(a.length>t)a.splice(t);else for(;a.length<t;)a.push("");for(;i<a.length;i++)a[i]=a[i].trim().replace(At.slashPipe,"|");return a}function ci(e,t,n){let a=e.length;if(a===0)return"";let i=0;for(;i<a;){let l=e.charAt(a-i-1);if(l===t&&!n)i++;else if(l!==t&&n)i++;else break}return e.slice(0,a-i)}function m1(e){let t=e.split("\n"),n=t.length-1;for(;n>=0&&At.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join("\n")}function Fw(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let a=0;a<e.length;a++)if(e[a]==="\\")a++;else if(e[a]===t[0])n++;else if(e[a]===t[1]&&(n--,n<0))return a;return n>0?-2:-1}function Jw(e,t=0){let n=t,a="";for(let i of e)if(i===" "){let l=4-n%4;a+=" ".repeat(l),n+=l}else a+=i,n++;return a}function g1(e,t,n,a,i){let l=t.href,r=t.title||null,s=e[1].replace(i.other.outputLinkReplace,"$1");a.state.inLink=!0;let o={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:l,title:r,text:s,tokens:a.inlineTokens(s)};return a.state.inLink=!1,o}function Iw(e,t,n){let a=e.match(n.other.indentCodeCompensation);if(a===null)return t;let i=a[1];return t.split("\n").map(l=>{let r=l.match(n.other.beginningSpace);if(r===null)return l;let[s]=r;return s.length>=i.length?l.slice(i.length):l}).join("\n")}var kc=class{constructor(e){G(this,"options");G(this,"rules");G(this,"lexer");this.options=e||Ji}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:m1(t[0]),a=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:a}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],a=Iw(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:a}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let a=ci(n,"#");(this.options.pedantic||!a||this.rules.other.endingSpaceChar.test(a))&&(n=a.trim())}return{type:"heading",raw:ci(t[0],"\n"),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:ci(t[0],"\n")}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=ci(t[0],"\n").split("\n"),a="",i="",l=[];for(;n.length>0;){let r=!1,s=[],o;for(o=0;o<n.length;o++)if(this.rules.other.blockquoteStart.test(n[o]))s.push(n[o]),r=!0;else if(!r)s.push(n[o]);else break;n=n.slice(o);let u=s.join("\n"),c=u.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");a=a?"".concat(a,"\n").concat(u):u,i=i?"".concat(i,"\n").concat(c):c;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,l,!0),this.lexer.state.top=f,n.length===0)break;let d=l.at(-1);if((d==null?void 0:d.type)==="code")break;if((d==null?void 0:d.type)==="blockquote"){let h=d,v=h.raw+"\n"+n.join("\n"),g=this.blockquote(v);l[l.length-1]=g,a=a.substring(0,a.length-h.raw.length)+g.raw,i=i.substring(0,i.length-h.text.length)+g.text;break}else if((d==null?void 0:d.type)==="list"){let h=d,v=h.raw+"\n"+n.join("\n"),g=this.list(v);l[l.length-1]=g,a=a.substring(0,a.length-d.raw.length)+g.raw,i=i.substring(0,i.length-h.raw.length)+g.raw,n=v.substring(l.at(-1).raw.length).split("\n");continue}}return{type:"blockquote",raw:a,tokens:l,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),a=n.length>1,i={type:"list",raw:"",ordered:a,start:a?+n.slice(0,-1):"",loose:!1,items:[]};n=a?"\\d{1,9}\\".concat(n.slice(-1)):"\\".concat(n),this.options.pedantic&&(n=a?n:"[*+-]");let l=this.rules.other.listItemRegex(n),r=!1;for(;e;){let o=!1,u="",c="";if(!(t=l.exec(e))||this.rules.block.hr.test(e))break;u=t[0],e=e.substring(u.length);let f=Jw(t[2].split("\n",1)[0],t[1].length),d=e.split("\n",1)[0],h=!f.trim(),v=0;if(this.options.pedantic?(v=2,c=f.trimStart()):h?v=t[1].length+1:(v=f.search(this.rules.other.nonSpaceChar),v=v>4?1:v,c=f.slice(v),v+=t[1].length),h&&this.rules.other.blankLine.test(d)&&(u+=d+"\n",e=e.substring(d.length+1),o=!0),!o){let g=this.rules.other.nextBulletRegex(v),k=this.rules.other.hrRegex(v),m=this.rules.other.fencesBeginRegex(v),p=this.rules.other.headingBeginRegex(v),b=this.rules.other.htmlBeginRegex(v),S=this.rules.other.blockquoteBeginRegex(v);for(;e;){let x=e.split("\n",1)[0],R;if(d=x,this.options.pedantic?(d=d.replace(this.rules.other.listReplaceNesting," "),R=d):R=d.replace(this.rules.other.tabCharGlobal," "),m.test(d)||p.test(d)||b.test(d)||S.test(d)||g.test(d)||k.test(d))break;if(R.search(this.rules.other.nonSpaceChar)>=v||!d.trim())c+="\n"+R.slice(v);else{if(h||f.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||m.test(f)||p.test(f)||k.test(f))break;c+="\n"+d}h=!d.trim(),u+=x+"\n",e=e.substring(x.length+1),f=R.slice(v)}}i.loose||(r?i.loose=!0:this.rules.other.doubleBlankLine.test(u)&&(r=!0)),i.items.push({type:"list_item",raw:u,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=u}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let o of i.items){this.lexer.state.top=!1,o.tokens=this.lexer.blockTokens(o.text,[]);let u=o.tokens[0];if(o.task&&((u==null?void 0:u.type)==="text"||(u==null?void 0:u.type)==="paragraph")){o.text=o.text.replace(this.rules.other.listReplaceTask,""),u.raw=u.raw.replace(this.rules.other.listReplaceTask,""),u.text=u.text.replace(this.rules.other.listReplaceTask,"");for(let f=this.lexer.inlineQueue.length-1;f>=0;f--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[f].src)){this.lexer.inlineQueue[f].src=this.lexer.inlineQueue[f].src.replace(this.rules.other.listReplaceTask,"");break}let c=this.rules.other.listTaskCheckbox.exec(o.raw);if(c){let f={type:"checkbox",raw:c[0]+" ",checked:c[0]!=="[ ]"};o.checked=f.checked,i.loose?o.tokens[0]&&["paragraph","text"].includes(o.tokens[0].type)&&"tokens"in o.tokens[0]&&o.tokens[0].tokens?(o.tokens[0].raw=f.raw+o.tokens[0].raw,o.tokens[0].text=f.raw+o.tokens[0].text,o.tokens[0].tokens.unshift(f)):o.tokens.unshift({type:"paragraph",raw:f.raw,text:f.raw,tokens:[f]}):o.tokens.unshift(f)}}else o.task&&(o.task=!1);if(!i.loose){let c=o.tokens.filter(d=>d.type==="space"),f=c.length>0&&c.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=f}}if(i.loose)for(let o of i.items){o.loose=!0;for(let u of o.tokens)u.type==="text"&&(u.type="paragraph")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=m1(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),a=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:ci(t[0],"\n"),href:a,title:i}}}table(e){var r;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=h1(t[1]),a=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),i=(r=t[3])!=null&&r.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],l={type:"table",raw:ci(t[0],"\n"),header:[],align:[],rows:[]};if(n.length===a.length){for(let s of a)this.rules.other.tableAlignRight.test(s)?l.align.push("right"):this.rules.other.tableAlignCenter.test(s)?l.align.push("center"):this.rules.other.tableAlignLeft.test(s)?l.align.push("left"):l.align.push(null);for(let s=0;s<n.length;s++)l.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:l.align[s]});for(let s of i)l.rows.push(h1(s,l.header.length).map((o,u)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:l.align[u]})));return l}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:ci(t[0],"\n"),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)==="\n"?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let l=ci(n.slice(0,-1),"\\");if((n.length-l.length)%2===0)return}else{let l=Fw(t[2],"()");if(l===-2)return;if(l>-1){let r=(t[0].indexOf("!")===0?5:4)+t[1].length+l;t[2]=t[2].substring(0,l),t[0]=t[0].substring(0,r).trim(),t[3]=""}}let a=t[2],i="";if(this.options.pedantic){let l=this.rules.other.pedanticHrefTitle.exec(a);l&&(a=l[1],i=l[3])}else i=t[3]?t[3].slice(1,-1):"";return a=a.trim(),this.rules.other.startAngleBracket.test(a)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?a=a.slice(1):a=a.slice(1,-1)),g1(t,{href:a&&a.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let a=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[a.toLowerCase()];if(!i){let l=n[0].charAt(0);return{type:"text",raw:l,text:l}}return g1(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let a=this.rules.inline.emStrongLDelim.exec(e);if(!(!a||!a[1]&&!a[2]&&!a[3]&&!a[4]||a[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(a[1]||a[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...a[0]].length-1,l,r,s=i,o=0,u=a[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+i);(a=u.exec(t))!==null;){if(l=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!l)continue;if(r=[...l].length,a[3]||a[4]){s+=r;continue}else if((a[5]||a[6])&&i%3&&!((i+r)%3)){o+=r;continue}if(s-=r,s>0)continue;r=Math.min(r,r+s+o);let c=[...a[0]][0].length,f=e.slice(0,i+a.index+c+r);if(Math.min(i,r)%2){let h=f.slice(1,-1);return{type:"em",raw:f,text:h,tokens:this.lexer.inlineTokens(h)}}let d=f.slice(2,-2);return{type:"strong",raw:f,text:d,tokens:this.lexer.inlineTokens(d)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),a=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return a&&i&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let a=this.rules.inline.delLDelim.exec(e);if(a&&(!a[1]||!n||this.rules.inline.punctuation.exec(n))){let i=[...a[0]].length-1,l,r,s=i,o=this.rules.inline.delRDelim;for(o.lastIndex=0,t=t.slice(-1*e.length+i);(a=o.exec(t))!==null;){if(l=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!l||(r=[...l].length,r!==i))continue;if(a[3]||a[4]){s+=r;continue}if(s-=r,s>0)continue;r=Math.min(r,r+s);let u=[...a[0]][0].length,c=e.slice(0,i+a.index+u+r),f=c.slice(i,-i);return{type:"del",raw:c,text:f,tokens:this.lexer.inlineTokens(f)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,a;return t[2]==="@"?(n=t[1],a="mailto:"+n):(n=t[1],a=n),{type:"link",raw:t[0],text:n,href:a,tokens:[{type:"text",raw:n,text:n}]}}}url(e){var n,a;let t;if(t=this.rules.inline.url.exec(e)){let i,l;if(t[2]==="@")i=t[0],l="mailto:"+i;else{let r;do r=t[0],t[0]=(a=(n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])!=null?a:"";while(r!==t[0]);i=t[0],t[1]==="www."?l="http://"+t[0]:l=t[0]}return{type:"link",raw:t[0],text:i,href:l,tokens:[{type:"text",raw:i,text:i}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},On=class yh{constructor(t){G(this,"tokens");G(this,"options");G(this,"state");G(this,"inlineQueue");G(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Ji,this.options.tokenizer=this.options.tokenizer||new kc,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:At,block:Sc.normal,inline:Zs.normal};this.options.pedantic?(n.block=Sc.pedantic,n.inline=Zs.pedantic):this.options.gfm&&(n.block=Sc.gfm,this.options.breaks?n.inline=Zs.breaks:n.inline=Zs.gfm),this.tokenizer.rules=n}static get rules(){return{block:Sc,inline:Zs}}static lex(t,n){return new yh(n).lex(t)}static lexInline(t,n){return new yh(n).inlineTokens(t)}lex(t){t=t.replace(At.carriageReturn,"\n"),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let a=this.inlineQueue[n];this.inlineTokens(a.src,a.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],a=!1){var l,r,s;this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(At.tabCharGlobal," ").replace(At.spaceLine,""));let i=1/0;for(;t;){if(t.length<i)i=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}let o;if((r=(l=this.options.extensions)==null?void 0:l.block)!=null&&r.some(c=>(o=c.call({lexer:this},t,n))?(t=t.substring(o.raw.length),n.push(o),!0):!1))continue;if(o=this.tokenizer.space(t)){t=t.substring(o.raw.length);let c=n.at(-1);o.raw.length===1&&c!==void 0?c.raw+="\n":n.push(o);continue}if(o=this.tokenizer.code(t)){t=t.substring(o.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+o.raw,c.text+="\n"+o.text,this.inlineQueue.at(-1).src=c.text):n.push(o);continue}if(o=this.tokenizer.fences(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.heading(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.hr(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.blockquote(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.list(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.html(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.def(t)){t=t.substring(o.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="paragraph"||(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+o.raw,c.text+="\n"+o.raw,this.inlineQueue.at(-1).src=c.text):this.tokens.links[o.tag]||(this.tokens.links[o.tag]={href:o.href,title:o.title},n.push(o));continue}if(o=this.tokenizer.table(t)){t=t.substring(o.raw.length),n.push(o);continue}if(o=this.tokenizer.lheading(t)){t=t.substring(o.raw.length),n.push(o);continue}let u=t;if((s=this.options.extensions)!=null&&s.startBlock){let c=1/0,f=t.slice(1),d;this.options.extensions.startBlock.forEach(h=>{d=h.call({lexer:this},f),typeof d=="number"&&d>=0&&(c=Math.min(c,d))}),c<1/0&&c>=0&&(u=t.substring(0,c+1))}if(this.state.top&&(o=this.tokenizer.paragraph(u))){let c=n.at(-1);a&&(c==null?void 0:c.type)==="paragraph"?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+o.raw,c.text+="\n"+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(o),a=u.length!==t.length,t=t.substring(o.raw.length);continue}if(o=this.tokenizer.text(t)){t=t.substring(o.raw.length);let c=n.at(-1);(c==null?void 0:c.type)==="text"?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+o.raw,c.text+="\n"+o.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=c.text):n.push(o);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var u,c,f,d,h,v;this.tokenizer.lexer=this;let a=t,i=null;if(this.tokens.links){let g=Object.keys(this.tokens.links);if(g.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(a))!==null;)g.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(a))!==null;)a=a.slice(0,i.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let l;for(;(i=this.tokenizer.rules.inline.blockSkip.exec(a))!==null;)l=i[2]?i[2].length:0,a=a.slice(0,i.index+l)+"["+"a".repeat(i[0].length-l-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);a=(f=(c=(u=this.options.hooks)==null?void 0:u.emStrongMask)==null?void 0:c.call({lexer:this},a))!=null?f:a;let r=!1,s="",o=1/0;for(;t;){if(t.length<o)o=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}r||(s=""),r=!1;let g;if((h=(d=this.options.extensions)==null?void 0:d.inline)!=null&&h.some(m=>(g=m.call({lexer:this},t,n))?(t=t.substring(g.raw.length),n.push(g),!0):!1))continue;if(g=this.tokenizer.escape(t)){t=t.substring(g.raw.length),n.push(g);continue}if(g=this.tokenizer.tag(t)){t=t.substring(g.raw.length),n.push(g);continue}if(g=this.tokenizer.link(t)){t=t.substring(g.raw.length),n.push(g);continue}if(g=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(g.raw.length);let m=n.at(-1);g.type==="text"&&(m==null?void 0:m.type)==="text"?(m.raw+=g.raw,m.text+=g.text):n.push(g);continue}if(g=this.tokenizer.emStrong(t,a,s)){t=t.substring(g.raw.length),n.push(g);continue}if(g=this.tokenizer.codespan(t)){t=t.substring(g.raw.length),n.push(g);continue}if(g=this.tokenizer.br(t)){t=t.substring(g.raw.length),n.push(g);continue}if(g=this.tokenizer.del(t,a,s)){t=t.substring(g.raw.length),n.push(g);continue}if(g=this.tokenizer.autolink(t)){t=t.substring(g.raw.length),n.push(g);continue}if(!this.state.inLink&&(g=this.tokenizer.url(t))){t=t.substring(g.raw.length),n.push(g);continue}let k=t;if((v=this.options.extensions)!=null&&v.startInline){let m=1/0,p=t.slice(1),b;this.options.extensions.startInline.forEach(S=>{b=S.call({lexer:this},p),typeof b=="number"&&b>=0&&(m=Math.min(m,b))}),m<1/0&&m>=0&&(k=t.substring(0,m+1))}if(g=this.tokenizer.inlineText(k)){t=t.substring(g.raw.length),g.raw.slice(-1)!=="_"&&(s=g.raw.slice(-1)),r=!0;let m=n.at(-1);(m==null?void 0:m.type)==="text"?(m.raw+=g.raw,m.text+=g.text):n.push(g);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return n}infiniteLoopError(t){let n="Infinite loop on byte: "+t;if(this.options.silent)console.error(n);else throw new Error(n)}},Ec=class{constructor(e){G(this,"options");G(this,"parser");this.options=e||Ji}space(e){return""}code({text:e,lang:t,escaped:n}){var l;let a=(l=(t||"").match(At.notSpaceStart))==null?void 0:l[0],i=e.replace(At.endingNewline,"")+"\n";return a?'<pre><code class="language-'+Fn(a)+'">'+(n?i:Fn(i,!0))+"</code></pre>\n":"<pre><code>"+(n?i:Fn(i,!0))+"</code></pre>\n"}blockquote({tokens:e}){return"<blockquote>\n".concat(this.parser.parse(e),"</blockquote>\n")}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return"<h".concat(t,">").concat(this.parser.parseInline(e),"</h").concat(t,">\n")}hr(e){return"<hr>\n"}list(e){let t=e.ordered,n=e.start,a="";for(let r=0;r<e.items.length;r++){let s=e.items[r];a+=this.listitem(s)}let i=t?"ol":"ul",l=t&&n!==1?' start="'+n+'"':"";return"<"+i+l+">\n"+a+"</"+i+">\n"}listitem(e){return"<li>".concat(this.parser.parse(e.tokens),"</li>\n")}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:e}){return"<p>".concat(this.parser.parseInline(e),"</p>\n")}table(e){let t="",n="";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let a="";for(let i=0;i<e.rows.length;i++){let l=e.rows[i];n="";for(let r=0;r<l.length;r++)n+=this.tablecell(l[r]);a+=this.tablerow({text:n})}return a&&(a="<tbody>".concat(a,"</tbody>")),"<table>\n<thead>\n"+t+"</thead>\n"+a+"</table>\n"}tablerow({text:e}){return"<tr>\n".concat(e,"</tr>\n")}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?"<".concat(n,' align="').concat(e.align,'">'):"<".concat(n,">"))+t+"</".concat(n,">\n")}strong({tokens:e}){return"<strong>".concat(this.parser.parseInline(e),"</strong>")}em({tokens:e}){return"<em>".concat(this.parser.parseInline(e),"</em>")}codespan({text:e}){return"<code>".concat(Fn(e,!0),"</code>")}br(e){return"<br>"}del({tokens:e}){return"<del>".concat(this.parser.parseInline(e),"</del>")}link({href:e,title:t,tokens:n}){let a=this.parser.parseInline(n),i=p1(e);if(i===null)return a;e=i;let l='<a href="'+e+'"';return t&&(l+=' title="'+Fn(t)+'"'),l+=">"+a+"</a>",l}image({href:e,title:t,text:n,tokens:a}){a&&(n=this.parser.parseInline(a,this.parser.textRenderer));let i=p1(e);if(i===null)return Fn(n);e=i;let l='<img src="'.concat(e,'" alt="').concat(Fn(n),'"');return t&&(l+=' title="'.concat(Fn(t),'"')),l+=">",l}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Fn(e.text)}},Nh=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},Cn=class bh{constructor(t){G(this,"options");G(this,"renderer");G(this,"textRenderer");this.options=t||Ji,this.options.renderer=this.options.renderer||new Ec,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Nh}static parse(t,n){return new bh(n).parse(t)}static parseInline(t,n){return new bh(n).parseInline(t)}parse(t){var a,i;this.renderer.parser=this;let n="";for(let l=0;l<t.length;l++){let r=t[l];if((i=(a=this.options.extensions)==null?void 0:a.renderers)!=null&&i[r.type]){let o=r,u=this.options.extensions.renderers[o.type].call({parser:this},o);if(u!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(o.type)){n+=u||"";continue}}let s=r;switch(s.type){case"space":{n+=this.renderer.space(s);break}case"hr":{n+=this.renderer.hr(s);break}case"heading":{n+=this.renderer.heading(s);break}case"code":{n+=this.renderer.code(s);break}case"table":{n+=this.renderer.table(s);break}case"blockquote":{n+=this.renderer.blockquote(s);break}case"list":{n+=this.renderer.list(s);break}case"checkbox":{n+=this.renderer.checkbox(s);break}case"html":{n+=this.renderer.html(s);break}case"def":{n+=this.renderer.def(s);break}case"paragraph":{n+=this.renderer.paragraph(s);break}case"text":{n+=this.renderer.text(s);break}default:{let o='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return n}parseInline(t,n=this.renderer){var i,l;this.renderer.parser=this;let a="";for(let r=0;r<t.length;r++){let s=t[r];if((l=(i=this.options.extensions)==null?void 0:i.renderers)!=null&&l[s.type]){let u=this.options.extensions.renderers[s.type].call({parser:this},s);if(u!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(s.type)){a+=u||"";continue}}let o=s;switch(o.type){case"escape":{a+=n.text(o);break}case"html":{a+=n.html(o);break}case"link":{a+=n.link(o);break}case"image":{a+=n.image(o);break}case"checkbox":{a+=n.checkbox(o);break}case"strong":{a+=n.strong(o);break}case"em":{a+=n.em(o);break}case"codespan":{a+=n.codespan(o);break}case"br":{a+=n.br(o);break}case"del":{a+=n.del(o);break}case"text":{a+=n.text(o);break}default:{let u='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(u),"";throw new Error(u)}}}return a}},Tc,Fs=(Tc=class{constructor(e){G(this,"options");G(this,"block");this.options=e||Ji}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?On.lex:On.lexInline}provideParser(e=this.block){return e?Cn.parse:Cn.parseInline}},G(Tc,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),G(Tc,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Tc),Pw=class{constructor(...e){G(this,"defaults",vh());G(this,"options",this.setOptions);G(this,"parse",this.parseMarkdown(!0));G(this,"parseInline",this.parseMarkdown(!1));G(this,"Parser",Cn);G(this,"Renderer",Ec);G(this,"TextRenderer",Nh);G(this,"Lexer",On);G(this,"Tokenizer",kc);G(this,"Hooks",Fs);this.use(...e)}walkTokens(e,t){var a,i;let n=[];for(let l of e)switch(n=n.concat(t.call(this,l)),l.type){case"table":{let r=l;for(let s of r.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of r.rows)for(let o of s)n=n.concat(this.walkTokens(o.tokens,t));break}case"list":{let r=l;n=n.concat(this.walkTokens(r.items,t));break}default:{let r=l;(i=(a=this.defaults.extensions)==null?void 0:a.childTokens)!=null&&i[r.type]?this.defaults.extensions.childTokens[r.type].forEach(s=>{let o=r[s].flat(1/0);n=n.concat(this.walkTokens(o,t))}):r.tokens&&(n=n.concat(this.walkTokens(r.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let a=T({},n);if(a.async=this.defaults.async||a.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let l=t.renderers[i.name];l?t.renderers[i.name]=function(...r){let s=i.renderer.apply(this,r);return s===!1&&(s=l.apply(this,r)),s}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let l=t[i.level];l?l.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),a.extensions=t),n.renderer){let i=this.defaults.renderer||new Ec(this.defaults);for(let l in n.renderer){if(!(l in i))throw new Error("renderer '".concat(l,"' does not exist"));if(["options","parser"].includes(l))continue;let r=l,s=n.renderer[r],o=i[r];i[r]=(...u)=>{let c=s.apply(i,u);return c===!1&&(c=o.apply(i,u)),c||""}}a.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new kc(this.defaults);for(let l in n.tokenizer){if(!(l in i))throw new Error("tokenizer '".concat(l,"' does not exist"));if(["options","rules","lexer"].includes(l))continue;let r=l,s=n.tokenizer[r],o=i[r];i[r]=(...u)=>{let c=s.apply(i,u);return c===!1&&(c=o.apply(i,u)),c}}a.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new Fs;for(let l in n.hooks){if(!(l in i))throw new Error("hook '".concat(l,"' does not exist"));if(["options","block"].includes(l))continue;let r=l,s=n.hooks[r],o=i[r];Fs.passThroughHooks.has(l)?i[r]=u=>{if(this.defaults.async&&Fs.passThroughHooksRespectAsync.has(l))return(async()=>{let f=await s.call(i,u);return o.call(i,f)})();let c=s.call(i,u);return o.call(i,c)}:i[r]=(...u)=>{if(this.defaults.async)return(async()=>{let f=await s.apply(i,u);return f===!1&&(f=await o.apply(i,u)),f})();let c=s.apply(i,u);return c===!1&&(c=o.apply(i,u)),c}}a.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,l=n.walkTokens;a.walkTokens=function(r){let s=[];return s.push(l.call(this,r)),i&&(s=s.concat(i.call(this,r))),s}}this.defaults=T(T({},this.defaults),a)}),this}setOptions(e){return this.defaults=T(T({},this.defaults),e),this}lexer(e,t){return On.lex(e,t!=null?t:this.defaults)}parser(e,t){return Cn.parse(e,t!=null?t:this.defaults)}parseMarkdown(e){return(t,n)=>{let a=T({},n),i=T(T({},this.defaults),a),l=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&a.async===!1)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return l(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let r=i.hooks?await i.hooks.preprocess(t):t,s=await(i.hooks?await i.hooks.provideLexer(e):e?On.lex:On.lexInline)(r,i),o=i.hooks?await i.hooks.processAllTokens(s):s;i.walkTokens&&await Promise.all(this.walkTokens(o,i.walkTokens));let u=await(i.hooks?await i.hooks.provideParser(e):e?Cn.parse:Cn.parseInline)(o,i);return i.hooks?await i.hooks.postprocess(u):u})().catch(l);try{i.hooks&&(t=i.hooks.preprocess(t));let r=(i.hooks?i.hooks.provideLexer(e):e?On.lex:On.lexInline)(t,i);i.hooks&&(r=i.hooks.processAllTokens(r)),i.walkTokens&&this.walkTokens(r,i.walkTokens);let s=(i.hooks?i.hooks.provideParser(e):e?Cn.parse:Cn.parseInline)(r,i);return i.hooks&&(s=i.hooks.postprocess(s)),s}catch(r){return l(r)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let a="<p>An error occurred:</p><pre>"+Fn(n.message+"",!0)+"</pre>";return t?Promise.resolve(a):a}if(t)return Promise.reject(n);throw n}}},Fi=new Pw;function de(e,t){return Fi.parse(e,t)}de.options=de.setOptions=function(e){return Fi.setOptions(e),de.defaults=Fi.defaults,y1(de.defaults),de};de.getDefaults=vh;de.defaults=Ji;de.use=function(...e){return Fi.use(...e),de.defaults=Fi.defaults,y1(de.defaults),de};de.walkTokens=function(e,t){return Fi.walkTokens(e,t)};de.parseInline=Fi.parseInline;de.Parser=Cn;de.parser=Cn.parse;de.Renderer=Ec;de.TextRenderer=Nh;de.Lexer=On;de.lexer=On.lex;de.Tokenizer=kc;de.Hooks=Fs;de.parse=de;var UC=de.options,BC=de.setOptions,HC=de.use,qC=de.walkTokens,jC=de.parseInline;var VC=Cn.parse,YC=On.lex;var N1=Q(be()),R1=Q(Le());de.setOptions({pedantic:!1,gfm:!0});function Nc({text:e,className:t}){let n=N1.default.useMemo(()=>{if(!e)return"";let a=de.parse(e,{async:!1});return u1.sanitize(typeof a=="string"?a:"")},[e]);return(0,R1.jsx)("div",{className:t,dangerouslySetInnerHTML:{__html:n}})}var $=Q(Le());function O1({initial:e,onNotifyRemove:t,onUpdated:n}){var di;let{t:a}=qe(),i=Xe(),[l,r]=bn.default.useState(e),[s,o]=bn.default.useState(e),[u,c]=bn.default.useState(!1),[f,d]=bn.default.useState(!1),[h,v]=bn.default.useState(!1),[g,k]=bn.default.useState(!1),[m,p]=bn.default.useState(null),[b,S]=bn.default.useState(!1),x=bn.default.useRef(null),R=bn.default.useRef(null);bn.default.useEffect(()=>()=>{x.current!==null&&window.clearTimeout(x.current),R.current!==null&&window.clearTimeout(R.current)},[]);function N(){x.current!==null&&(window.clearTimeout(x.current),x.current=null),R.current!==null&&(window.clearTimeout(R.current),R.current=null)}function D(Y){N(),S(!1),p(Y),x.current=window.setTimeout(()=>{x.current=null,S(!0),R.current=window.setTimeout(()=>{p(null),S(!1),R.current=null},5e3)},3e3)}let M="".concat(l.bid.toString(),"_tags"),U="".concat(Un(i.userR),"/b:").concat(l.slug),ue=Y=>"".concat(Un(i.userR),"/t:").concat(ul(Y)),K=Y=>{let se=new Date(Y);return new Date(se.getTime()+2).toISOString()},q="".concat(Un(i.userR),"?before=").concat(encodeURIComponent(K(new Date(l.time)))),O=i.dat.suggestTags===!0,X=i.dat.suggestTagsUseReturnKey!==!1,{tagInputRef:I,suggestionState:pe,closeSuggestions:Ee,onTagsChange:it,onTagsKeyDown:he,onTagsSelect:ye,onSuggestionHover:et,onSuggestionPick:Ze}=Xi({enabled:O,useReturnKey:X,tags:s.tags,onTagsUpdate:Y=>{o(se=>L(T({},se),{tags:Y}))}});async function Te(Y){try{let se=await gS(l.bid,Y?"star":"unstar");if(!se.ok){D(ft(a,se.status,se.bodyText));return}N(),p(null);let St=L(T({},l),{selected:Y});r(St),o(nn=>L(T({},nn),{selected:Y})),n(St)}catch(se){D(se instanceof ge?a("error.requestTimedOut"):a("error.networkError"))}}async function _n(){try{let Y=await dc(l.bid);if(!Y.ok){D(ft(a,Y.status,Y.bodyText));return}t()}catch(Y){D(Y instanceof ge?a("error.requestTimedOut"):a("error.networkError"))}}async function Re(){try{let Y=await yS(l.bid);if(!Y.ok){D(ft(a,Y.status,Y.bodyText));return}N(),p(null);let se=L(T({},l),{toread:!1});r(se),n(se)}catch(Y){D(Y instanceof ge?a("error.requestTimedOut"):a("error.networkError"))}}function Oa(Y){o(l),d(Y),N(),p(null),S(!1),k(!1),Ee(),Y&&xo(M)}async function Oe(){v(!0);try{let Y=await hc(s);Y!=null&&o(se=>L(T({},se),{title:Y}))}finally{v(!1)}}async function Pn(){k(!0);try{let Y=await TS(l.bid);if(!Y.ok){D(ft(a,Y.status,Y.bodyText));return}}finally{k(!1)}}let Wn=async Y=>{Y.preventDefault(),N(),p(null),S(!1);let se=L(T({},s),{tags:ra(s.tags)});try{let St=await pc(se);St.ok&&St.status>=200&&St.status<300?(r(se),d(!1),n(se)):D(ft(a,St.status,St.bodyText))}catch(St){D(St instanceof ge?a("error.requestTimedOut"):a("error.networkError"))}},Yt=g||l.private||l.url!==s.url;return(0,$.jsxs)("div",{id:String(l.bid),className:"bookmark w-100 mw7 pa1 mb3".concat(l.private?" private":""),children:[i.dat.isowner?(0,$.jsx)("div",{className:"star fl pointer".concat(l.selected?" selected":""),children:(0,$.jsx)("button",{className:"thm-text-border",onClick:()=>{Te(!l.selected)},type:"button",children:"\u272D"})}):null,f?null:(0,$.jsxs)("div",{className:"display",children:[(0,$.jsx)("a",{href:l.url,target:"_blank",rel:"noreferrer",className:"link f5 lh-title".concat(l.toread?" unread":""),children:l.title===""?a("noTitle"):l.title}),(0,$.jsx)("br",{}),(0,$.jsx)("a",{href:l.url,className:"link f7 thm-text-tertiary thm-hover-link-color",children:l.url}),l.archiveUrl?(0,$.jsx)("a",{href:l.archiveUrl,className:"link f7 thm-text-tertiary thm-hover-link-color ml2 thm-text-success",target:"_blank",rel:"noreferrer",title:a("bmark.archiveLinkTitle"),children:"\u2611"}):null,(0,$.jsx)("br",{}),(0,$.jsx)("div",{className:"description mt1 thm-text-secondary",children:(0,$.jsx)(Nc,{text:l.description})}),(0,$.jsx)("div",{className:"tags",children:l.tags!==""?l.tags.split(" ").map(Y=>(0,$.jsx)("a",{className:"link tag mr1".concat(Y.slice(0,1)==="."?" private":""),href:ue(Y),children:Y},Y)):null}),(0,$.jsxs)("div",{children:[(0,$.jsx)("a",{className:"link f7 di mr5 thm-text-tertiary",href:U,"data-time":l.time,title:Da(i.lang,l.time),children:ng(i.lang,l.time)}),i.dat.isowner?(0,$.jsxs)("div",{className:"edit_links di",children:[(0,$.jsxs)("button",{type:"button",onClick:()=>{Oa(!0)},className:"edit thm-text-muted thm-hover-link-color",children:[a("edit"),"\xA0\xA0"]}),(0,$.jsxs)("div",{className:"delete_link di",children:[(0,$.jsx)("button",{type:"button",onClick:()=>{c(!0)},className:"delete thm-text-muted thm-hover-link-color".concat(u?" dn":""),children:a("delete")}),(0,$.jsxs)("span",{className:"confirm thm-text-error".concat(u?"":" dn"),children:[(0,$.jsxs)("button",{type:"button",onClick:()=>{c(!1)},children:[a("cancel"),"\xA0/\xA0"]}),(0,$.jsx)("button",{type:"button",onClick:()=>{_n()},className:"thm-text-error",children:a("destroy")})]})]})]}):null,i.dat.isowner&&l.toread?(0,$.jsxs)("div",{className:"read di",children:["\xA0\xA0",(0,$.jsx)("button",{onClick:()=>{Re()},className:"mark_read",type:"button",children:a("bmark.markAsRead")})]}):null]}),((di=i.dat.filter)==null?void 0:di.tag)=="FilterSingle"?(0,$.jsx)("div",{className:"mt2",children:(0,$.jsx)("a",{className:"link f7 di mr5",href:q,children:a("bmark.viewInContext")})}):null]}),f?(0,$.jsx)("div",{className:"edit_bookmark_form pa2 pt0 thm-bg-surface",children:(0,$.jsxs)("form",{onSubmit:Y=>{Wn(Y)},children:[(0,$.jsx)("div",{children:a("bmark.url")}),(0,$.jsx)("input",{type:"url",className:"url w-100 mb2 pt1 edit_form_input",required:!0,name:"url",value:s.url,onChange:Y=>{o(se=>L(T({},se),{url:Y.target.value}))}}),(0,$.jsx)("div",{children:a("bmark.title")}),(0,$.jsxs)("div",{className:"flex",children:[(0,$.jsx)("input",{type:"text",className:"title w-100 mb2 pt1 edit_form_input",name:"title",value:s.title,onChange:Y=>{o(se=>L(T({},se),{title:Y.target.value}))}}),(0,$.jsx)("button",{disabled:h,type:"button",onClick:()=>{Oe()},className:"ml1 pa1 mb2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim f7".concat(h?" thm-bg-disabled":""),children:a("fetch")})]}),(0,$.jsx)("div",{children:a("bmark.description")}),(0,$.jsx)("textarea",{className:"description w-100 mb1 pt1 edit_form_input",name:"description",rows:5,value:s.description,onChange:Y=>{o(se=>L(T({},se),{description:Y.target.value}))}}),(0,$.jsxs)("div",{id:"tags_input_box",children:[(0,$.jsx)("div",{children:a("bmark.tags")}),(0,$.jsxs)("div",{className:"relative",children:[(0,$.jsx)("input",{id:M,ref:I,type:"text",className:"tags w-100 mb1 pt1 edit_form_input",name:"tags",autoComplete:"off",autoCapitalize:"off",value:s.tags,onChange:it,onKeyDown:he,onClick:ye,onSelect:ye,onBlur:()=>{window.setTimeout(()=>{Ee()},0)}}),pe!=null?(0,$.jsx)($i,{suggestionState:pe,onHover:et,onPick:Ze}):null]})]}),(0,$.jsxs)("div",{className:"edit_form_checkboxes mv3",children:[(0,$.jsx)("input",{type:"checkbox",className:"private pointer",id:"edit_private",name:"private",checked:s.private,onChange:Y=>{o(se=>L(T({},se),{private:Y.target.checked}))}})," ",(0,$.jsx)("label",{htmlFor:"edit_private",className:"mr2",children:a("bmark.private")})," ",(0,$.jsx)("input",{type:"checkbox",className:"toread pointer",id:"edit_toread",name:"toread",checked:s.toread,onChange:Y=>{o(se=>L(T({},se),{toread:Y.target.checked}))}})," ",(0,$.jsx)("label",{htmlFor:"edit_toread",children:a("bmark.toread")})]}),(0,$.jsxs)("div",{className:"flex justify-between items-center",children:[(0,$.jsxs)("div",{children:[(0,$.jsx)("input",{type:"submit",className:"mr1 pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",value:a("save")})," ",(0,$.jsx)("input",{type:"reset",className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",value:a("cancel"),onClick:()=>{Oa(!1)}})]}),i.dat.archiveBackendEnabled?(0,$.jsx)("button",{type:"button",disabled:Yt,onClick:()=>{Pn()},className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary".concat(g?" thm-bg-disabled":"").concat(Yt?" not-allowed o-20":""),children:a(g?"archiving":"archive")}):null]})]})}):null,m!=null?(0,$.jsx)("span",{className:"thm-text-error f7 db mt1",style:{opacity:b?0:1,transition:b?"opacity 5s":"none"},children:m}):null]})}var Oh=Q(Le());function C1({initial:e}){let[t,n]=Rh.default.useState(!1),a=Qi(o=>o.bmarks),i=Qi(o=>o.setAll),l=Qi(o=>o.removeById),r=Qi(o=>o.upsert);return Rh.default.useLayoutEffect(()=>{i(e),n(!0)},[e,i]),(0,Oh.jsx)("div",{children:(t?a:e).map(o=>(0,Oh.jsx)(O1,{initial:o,onNotifyRemove:()=>{l(o.bid)},onUpdated:u=>{r(u)}},o.bid))})}var at=Q(be());var te=Q(Le());function _1(e,t,n,a,i){return e===null?"bulkEdit.pleaseAddSelection":!t&&!n.trim()&&!a.trim()?"bulkEdit.pleaseChooseAction":i>2e4&&n.trim().split(/\s+/).filter(Boolean).length>10?"bulkEdit.tooManyTags":null}function Ra(e,t,n,a){return(0,te.jsx)("a",{href:"#",className:"dib mt1 link".concat(e===t?" nav-active":" silver hover-alt"),onClick:i=>{i.preventDefault(),a(t)},children:n})}function D1({bcount:e}){var pi,hi,gr,yr;let{t}=qe(),[n,a]=(0,at.useState)(!1),[i,l]=(0,at.useState)(null),[r,s]=(0,at.useState)(null),[o,u]=(0,at.useState)(""),[c,f]=(0,at.useState)(""),[d,h]=(0,at.useState)(!1),[v,g]=(0,at.useState)(!1),[k,m]=(0,at.useState)(!1),[p,b]=(0,at.useState)(null),[S,x]=(0,at.useState)(!1),R=(0,at.useRef)(null),N=(0,at.useRef)(null),D=Xe(),M=D.dat.suggestTags===!0,U=D.dat.suggestTagsUseReturnKey!==!1,ue=(pi=D.dat.filter)!=null?pi:{tag:"FilterAll"},K=(hi=D.dat.sharedp)!=null?hi:"all",q=(gr=D.dat.tags)!=null?gr:[],O=(yr=D.dat.query)!=null?yr:null,I=Qi(Ue=>Ue.bmarks).map(Ue=>Ue.bid),pe=I.length,Ee=i===null?0:i==="page"?pe:e,it=_1(i,r,o,c,e),he=d||it!==null||v||k,{tagInputRef:ye,suggestionState:et,closeSuggestions:Ze,onTagsChange:Te,onTagsKeyDown:_n,onTagsSelect:Re,onSuggestionHover:Oa,onSuggestionPick:Oe}=Xi({enabled:M&&r!=="delete",useReturnKey:U,tags:c,onTagsUpdate:f}),{tagInputRef:Pn,suggestionState:Wn,closeSuggestions:Yt,onTagsChange:di,onTagsKeyDown:Y,onTagsSelect:se,onSuggestionHover:St,onSuggestionPick:nn}=Xi({enabled:M&&r!=="delete",useReturnKey:U,tags:o,onTagsUpdate:u}),ea=()=>{R.current!==null&&(window.clearTimeout(R.current),R.current=null),N.current!==null&&(window.clearTimeout(N.current),N.current=null)},Dn=()=>{l(null),s(null),u(""),f(""),g(!1),m(!1),b(null),x(!1),ea()};(0,at.useEffect)(()=>{let Ue=document.getElementById("bulk-edit-toggle");if(!Ue)return;let an=vn=>{vn.preventDefault(),Dn(),a(Sn=>!Sn)};return Ue.addEventListener("click",an),()=>{Ue.removeEventListener("click",an)}},[]),(0,at.useEffect)(()=>{let Ue=document.getElementById("bulk-edit-toggle");Ue&&(Ue.classList.toggle("nav-active",n),Ue.classList.toggle("silver",!n))},[n]),(0,at.useEffect)(()=>{g(!1),m(!1),b(null),x(!1)},[r,i]),(0,at.useEffect)(()=>()=>{ea()},[]);let ta=Ue=>{ea(),x(!1),b(Ue),R.current=window.setTimeout(()=>{R.current=null,x(!0),N.current=window.setTimeout(()=>{b(null),x(!1),N.current=null},5e3)},3e3)},mr=async Ue=>{var Gt;Ue.preventDefault(),b(null),x(!1);let an=ra(o),vn=ra(c),Sn=_1(i,r,an,vn,e);if(Sn!==null){ta(t(Sn));return}if(r==="delete"&&!v){g(!0);return}if(r==="public"&&!k){m(!0);return}g(!1),m(!1),h(!0);try{if(i===null)return;let na=await bS(i==="page"?{selection:"page",bids:I,action:r,addTags:an,removeTags:vn,selectionCount:Ee}:{selection:"all",filter:ue,sharedp:K,tags:q,query:O,action:r,addTags:an,removeTags:vn,selectionCount:Ee});na.ok?window.location.reload():ta(ft(t,na.status,(Gt=na.bodyText)!=null?Gt:""))}catch(na){na instanceof ge?ta(t("error.requestTimedOut")):ta(t("error.networkError"))}finally{h(!1)}};if(!n)return null;let _t=Ue=>{s(an=>an===Ue?null:Ue),Ue==="delete"&&(u(""),f(""))};return(0,te.jsxs)("form",{onSubmit:Ue=>{mr(Ue)},className:"w-100 mw7 pa2 bulk_bookmark_form mt1",children:[(0,te.jsxs)("div",{className:"mb2",children:[(0,te.jsxs)("div",{children:[(0,te.jsx)("span",{className:"fw7",children:t("bulkEdit.select")}),i!==null&&(0,te.jsx)("span",{className:"ml2",children:Ee===1?t("bulkEdit.oneBookmarkSelected"):t("bulkEdit.bookmarksSelected",{count:Ee})})]}),(0,te.jsxs)("div",{children:[Ra(i,"page",t("bulkEdit.thisPage"),l)," \u2027 ",Ra(i,"all",t("bulkEdit.allPages"),l)]})]}),(0,te.jsxs)("div",{className:"mb2",children:[(0,te.jsx)("div",{children:(0,te.jsx)("span",{className:"fw7",children:t("bulkEdit.action")})}),(0,te.jsxs)("div",{children:[Ra(r,"private",t("bulkEdit.makePrivate"),_t)," \u2027 ",Ra(r,"public",t("bulkEdit.makePublic"),_t)," \u2027 ",Ra(r,"read",t("bulkEdit.markAsRead"),_t)," \u2027 ",Ra(r,"unread",t("bulkEdit.unread"),_t)," \u2027 ",Ra(r,"star",t("bulkEdit.addStars"),_t)," \u2027 ",Ra(r,"unstar",t("bulkEdit.removeStars"),_t)," \u2027 ",Ra(r,"delete",t("delete"),_t)]})]}),(0,te.jsxs)("div",{className:"mb2",children:[(0,te.jsx)("div",{children:(0,te.jsx)("span",{className:"fw7".concat(ra(c)?" nav-active":""),children:t("bulkEdit.removeTags")})}),(0,te.jsxs)("div",{className:"relative",children:[(0,te.jsx)("input",{ref:ye,type:"text",className:"tags w-100 mb1 pt1 edit_form_input".concat(r==="delete"?" o-50 not-allowed":""),disabled:r==="delete",autoComplete:"off",autoCapitalize:"off",value:c,onChange:Te,onKeyDown:_n,onClick:Re,onSelect:Re,onBlur:()=>{window.setTimeout(()=>{Ze()},0)}}),et!=null?(0,te.jsx)($i,{suggestionState:et,onHover:Oa,onPick:Oe}):null]})]}),(0,te.jsxs)("div",{className:"mb2",children:[(0,te.jsx)("div",{children:(0,te.jsx)("span",{className:"fw7".concat(ra(o)?" nav-active":""),children:t("bulkEdit.addTags")})}),(0,te.jsxs)("div",{className:"relative",children:[(0,te.jsx)("input",{ref:Pn,type:"text",className:"tags w-100 mb1 pt1 edit_form_input".concat(r==="delete"?" o-50 not-allowed":""),disabled:r==="delete",autoComplete:"off",autoCapitalize:"off",value:o,onChange:di,onKeyDown:Y,onClick:se,onSelect:se,onBlur:()=>{window.setTimeout(()=>{Yt()},0)}}),Wn!=null?(0,te.jsx)($i,{suggestionState:Wn,onHover:St,onPick:nn}):null]})]}),(0,te.jsxs)("div",{className:"flex items-center",children:[(0,te.jsx)("button",{type:"submit",disabled:d||v||k,className:"mr2 pv1 ph2 thm-text-primary ba thm-border-default rdim".concat(he?" thm-bg-disabled not-allowed":" thm-bg-secondary pointer"),onClick:()=>{it!==null&&ta(t(it))},children:t(d?"bulkEdit.submitting":"bulkEdit.submit")})," ",(0,te.jsx)("button",{type:"button",className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",onClick:()=>{Dn(),a(!1)},children:t("cancel")}),p!=null&&(0,te.jsx)("span",{className:"thm-text-error f6 ml2",style:{opacity:S?0:1,transition:S?"opacity 5s":"none"},children:p}),v&&(0,te.jsxs)("span",{className:"f6 ml2",children:[(0,te.jsx)("span",{className:"mr2",children:Ee===1?t("bulkEdit.destroyOne"):t("bulkEdit.destroyMany",{count:Ee})}),(0,te.jsxs)("span",{className:"nowrap",children:[(0,te.jsx)("button",{type:"button",onClick:()=>{g(!1)},children:t("cancel")})," / ",(0,te.jsx)("button",{type:"submit",className:"thm-text-error",children:t("destroy")})]})]}),k&&(0,te.jsxs)("span",{className:"f6 ml2",children:[(0,te.jsx)("span",{className:"mr2",children:Ee===1?t("bulkEdit.publicOne"):t("bulkEdit.publicMany",{count:Ee})}),(0,te.jsxs)("span",{className:"nowrap",children:[(0,te.jsx)("button",{type:"button",onClick:()=>{m(!1)},children:t("cancel")})," / ",(0,te.jsx)("button",{type:"submit",className:"thm-text-error",children:t("bulkEdit.makePublic")})]})]})]})]})}var Ch=Q(be());var Vt=Q(Le());function Ww(e){let t=e.split("\n");return(0,Vt.jsxs)(Vt.Fragment,{children:[t[0],t.slice(1).map((n,a)=>(0,Vt.jsxs)(Ch.default.Fragment,{children:[(0,Vt.jsx)("br",{}),n]},a))]})}function M1({initial:e}){let{t}=qe(),n=Xe(),a=n.dat.previewNotes!==!1,i=l=>"".concat(Un(n.userR),"/notes/").concat(l);return(0,Vt.jsx)("div",{children:e.map(l=>{let r=Ch.default.useMemo(()=>sl(n.lang,l.created),[n.lang,l.created]);return(0,Vt.jsx)("div",{id:String(l.id),className:"note w-100 mw7 pa1 mb2".concat(l.shared?"":" private"),children:(0,Vt.jsxs)("div",{className:"display",children:[(0,Vt.jsx)("a",{href:i(l.slug),className:"link f5 lh-title",children:l.title===""?t("noTitle"):l.title}),(0,Vt.jsx)("br",{}),a?(0,Vt.jsx)("div",{className:"description mt1 thm-text-secondary",children:Ww(l.text.slice(0,200))}):null,(0,Vt.jsx)("a",{className:"link f7 dib thm-text-tertiary w4","data-created":l.created,title:Da(n.lang,l.created),href:i(l.slug),children:r})]})},l.id)})})}var fi=Q(be());var J=Q(Le());function eN(e){let t=e.split("\n");return(0,J.jsxs)(J.Fragment,{children:[t[0],t.slice(1).map((n,a)=>(0,J.jsxs)(fi.default.Fragment,{children:[(0,J.jsx)("br",{}),n]},a))]})}function z1({initial:e}){let{t}=qe(),n=Xe(),[a,i]=fi.default.useState(e),[l,r]=fi.default.useState(e),[s,o]=fi.default.useState(!1),[u,c]=fi.default.useState(e.id<=0),[f,d]=fi.default.useState(!1),[h,v]=fi.default.useState(null),g=sl(n.lang,a.created),k="".concat(a.id.toString(),"_text");function m(S){r(a),c(S);let x=Rr(),R=Or(x,"next");!S&&R==="closeWindow"?ol(window):S&&xo(k)}async function p(){try{let S=await wS(a.id);if(!S.ok){v(ft(t,S.status,S.bodyText));return}d(!0)}catch(S){v(S instanceof ge?t("error.requestTimedOut"):t("error.networkError"))}}let b=async S=>{S.preventDefault(),v(null);try{let x=await xS(l);if(x.ok&&x.status>=200&&x.status<300){let R=Rr(),N=Or(R,"next"),D=document.referrer,M=window.location.origin;N==="closeWindow"?ol(window):N==="back"?D.startsWith(M)?window.location.href=D:window.location.href=M:l.id===0?window.location.href=Un(n.noteR):(i(l),c(!1))}else v(ft(t,x.status,x.bodyText))}catch(x){v(x instanceof ge?t("error.requestTimedOut"):t("error.networkError"))}};return f?(0,J.jsx)("p",{className:"thm-text-error",children:t("note.killed")}):(0,J.jsxs)("div",{id:String(a.id),className:"note w-100 mw7 pa1 mb2",children:[h?(0,J.jsx)("div",{className:"alert alert-err mb2",children:h}):null,u?(0,J.jsxs)("form",{onSubmit:S=>{b(S)},children:[(0,J.jsx)("p",{className:"mt2 mb1",children:t("note.titleLabel")}),(0,J.jsx)("input",{type:"text",className:"title w-100 mb1 pt1 edit_form_input",name:"title",value:l.title,onChange:S=>{r(x=>L(T({},x),{title:S.target.value}))},autoFocus:l.title===""}),(0,J.jsx)("br",{}),(0,J.jsx)("p",{className:"mt2 mb1",children:t("note.descriptionLabel")}),(0,J.jsx)("textarea",{id:k,className:"description w-100 mb1 pt1 edit_form_input",name:"text",rows:25,value:l.text,onChange:S=>{r(x=>L(T({},x),{text:S.target.value}))}}),(0,J.jsxs)("div",{className:"edit_form_checkboxes mb3",children:[(0,J.jsx)("input",{type:"checkbox",className:"is-markdown pointer",id:"edit_ismarkdown",name:"ismarkdown",checked:l.isMarkdown,onChange:S=>{r(x=>L(T({},x),{isMarkdown:S.target.checked}))}})," ",(0,J.jsx)("label",{htmlFor:"edit_ismarkdown",className:"mr2",children:t("note.useMarkdown")}),(0,J.jsx)("br",{})]}),(0,J.jsxs)("div",{className:"edit_form_checkboxes mb3",children:[(0,J.jsx)("input",{type:"checkbox",className:"is-markdown pointer",id:"edit_shared",name:"shared",checked:l.shared,onChange:S=>{r(x=>L(T({},x),{shared:S.target.checked}))}})," ",(0,J.jsx)("label",{htmlFor:"edit_shared",className:"mr2",children:t("note.publicLabel")}),(0,J.jsx)("br",{})]}),(0,J.jsx)("input",{type:"submit",className:"mr1 pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",value:t("save")})," ",(0,J.jsx)("input",{type:"reset",className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",value:t("cancel"),onClick:()=>{m(!1)}})]}):(0,J.jsxs)(J.Fragment,{children:[n.dat.isowner?(0,J.jsx)("div",{className:"edit_links db mb3",children:(0,J.jsxs)("button",{type:"button",onClick:()=>{m(!0)},className:"edit thm-text-muted thm-hover-link-color",children:[t("edit"),"\xA0\xA0"]})}):null,(0,J.jsxs)("div",{className:"display",children:[(0,J.jsx)("div",{className:"link f5 lh-title",children:a.title===""?t("noTitle"):a.title}),(0,J.jsx)("br",{}),a.isMarkdown?(0,J.jsx)("div",{className:"description mt1",children:(0,J.jsx)(Nc,{text:a.text})}):(0,J.jsx)("div",{className:"description mt1 thm-text-secondary",children:eN(a.text)}),(0,J.jsxs)("div",{className:"link f7 mt2 dib thm-text-tertiary w4",children:[(0,J.jsx)("span",{"data-created":a.created,title:Da(n.lang,a.created),children:g})," - ",(0,J.jsx)("span",{className:"thm-text-tertiary",children:a.shared?t("filter.public"):t("filter.private")})]})]}),n.dat.isowner?(0,J.jsxs)("div",{className:"edit_links db mt3",children:[(0,J.jsxs)("button",{type:"button",onClick:()=>{m(!0)},className:"edit thm-text-muted thm-hover-link-color",children:[t("edit"),"\xA0\xA0"]}),(0,J.jsxs)("div",{className:"delete_link di",children:[(0,J.jsx)("button",{type:"button",onClick:()=>{o(!0)},className:"delete thm-text-muted thm-hover-link-color".concat(s?" dn":""),children:t("delete")}),(0,J.jsxs)("span",{className:"confirm thm-text-error".concat(s?"":" dn"),children:[(0,J.jsxs)("button",{type:"button",onClick:()=>{o(!1)},children:[t("cancel"),"\xA0/\xA0"]}),(0,J.jsx)("button",{type:"button",onClick:()=>{p()},className:"thm-text-error",children:t("destroy")})]})]})]}):null]})]})}var vt=Q(be());var we=Q(Le());function L1(e,t){return e===null?"bulkEditNotes.pleaseAddSelection":t?null:"bulkEditNotes.pleaseChooseAction"}function Ii(e,t,n,a){return(0,we.jsx)("a",{href:"#",className:"dib mt1 link".concat(e===t?" nav-active":" silver hover-alt"),onClick:i=>{i.preventDefault(),a(t)},children:n})}function U1({ncount:e}){var pe,Ee,it;let{t}=qe(),[n,a]=(0,vt.useState)(!1),[i,l]=(0,vt.useState)(null),[r,s]=(0,vt.useState)(null),[o,u]=(0,vt.useState)(!1),[c,f]=(0,vt.useState)(!1),[d,h]=(0,vt.useState)(!1),[v,g]=(0,vt.useState)(null),[k,m]=(0,vt.useState)(!1),p=(0,vt.useRef)(null),b=(0,vt.useRef)(null),S=Xe(),x=(pe=S.dat.query)!=null?pe:null,R=(Ee=S.dat.sharedp)!=null?Ee:"all",N=((it=S.dat.notes)!=null?it:[]).map(he=>he.id),D=N.length,M=i===null?0:i==="page"?D:e,U=L1(i,r),ue=o||U!==null||c||d,K=()=>{p.current!==null&&(window.clearTimeout(p.current),p.current=null),b.current!==null&&(window.clearTimeout(b.current),b.current=null)},q=()=>{l(null),s(null),f(!1),h(!1),g(null),m(!1),K()};(0,vt.useEffect)(()=>{let he=document.getElementById("bulk-edit-toggle");if(!he)return;let ye=et=>{et.preventDefault(),q(),a(Ze=>!Ze)};return he.addEventListener("click",ye),()=>{he.removeEventListener("click",ye)}},[]),(0,vt.useEffect)(()=>{let he=document.getElementById("bulk-edit-toggle");he&&(he.classList.toggle("nav-active",n),he.classList.toggle("silver",!n))},[n]),(0,vt.useEffect)(()=>{f(!1),h(!1),g(null),m(!1)},[r,i]),(0,vt.useEffect)(()=>()=>{K()},[]);let O=he=>{K(),m(!1),g(he),p.current=window.setTimeout(()=>{p.current=null,m(!0),b.current=window.setTimeout(()=>{g(null),m(!1),b.current=null},5e3)},3e3)},X=async he=>{var et;he.preventDefault(),g(null),m(!1);let ye=L1(i,r);if(ye!==null){O(t(ye));return}if(r==="delete"&&!c){f(!0);return}if(r==="public"&&!d){h(!0);return}f(!1),h(!1),u(!0);try{if(i===null||r===null)return;let Ze=await vS(i==="page"?{selection:"page",nids:N,action:r,selectionCount:M}:{selection:"all",sharedp:R,query:x,action:r,selectionCount:M});Ze.ok?window.location.reload():O(ft(t,Ze.status,(et=Ze.bodyText)!=null?et:""))}catch(Ze){Ze instanceof ge?O(t("error.requestTimedOut")):O(t("error.networkError"))}finally{u(!1)}};if(!n)return null;let I=he=>{s(ye=>ye===he?null:he)};return(0,we.jsxs)("form",{onSubmit:he=>{X(he)},className:"w-100 mw7 pa2 bulk_bookmark_form mt1",children:[(0,we.jsxs)("div",{className:"mb2",children:[(0,we.jsxs)("div",{children:[(0,we.jsx)("span",{className:"fw7",children:t("bulkEdit.select")}),i!==null&&(0,we.jsx)("span",{className:"ml2",children:M===1?t("bulkEditNotes.oneNoteSelected"):t("bulkEditNotes.notesSelected",{count:M})})]}),(0,we.jsxs)("div",{children:[Ii(i,"page",t("bulkEdit.thisPage"),l)," \u2027 ",Ii(i,"all",t("bulkEdit.allPages"),l)]})]}),(0,we.jsxs)("div",{className:"mb2",children:[(0,we.jsx)("div",{children:(0,we.jsx)("span",{className:"fw7",children:t("bulkEdit.action")})}),(0,we.jsxs)("div",{children:[Ii(r,"private",t("bulkEdit.makePrivate"),I)," \u2027 ",Ii(r,"public",t("bulkEdit.makePublic"),I)," \u2027 ",Ii(r,"markdown",t("bulkEditNotes.useMarkdown"),I)," \u2027 ",Ii(r,"plaintext",t("bulkEditNotes.usePlaintext"),I)," \u2027 ",Ii(r,"delete",t("delete"),I)]})]}),(0,we.jsxs)("div",{className:"flex items-center",children:[(0,we.jsx)("button",{type:"submit",disabled:o||c||d,className:"mr2 pv1 ph2 thm-text-primary ba thm-border-default rdim".concat(ue?" thm-bg-disabled not-allowed":" thm-bg-secondary pointer"),onClick:()=>{U!==null&&O(t(U))},children:t(o?"bulkEdit.submitting":"bulkEdit.submit")})," ",(0,we.jsx)("button",{type:"button",className:"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim",onClick:()=>{q(),a(!1)},children:t("cancel")}),v!=null&&(0,we.jsx)("span",{className:"thm-text-error f6 ml2",style:{opacity:k?0:1,transition:k?"opacity 5s":"none"},children:v}),c&&(0,we.jsxs)("span",{className:"f6 ml2",children:[(0,we.jsx)("span",{className:"mr2",children:M===1?t("bulkEditNotes.destroyOne"):t("bulkEditNotes.destroyMany",{count:M})}),(0,we.jsxs)("span",{className:"nowrap",children:[(0,we.jsx)("button",{type:"button",onClick:()=>{f(!1)},children:t("cancel")})," / ",(0,we.jsx)("button",{type:"submit",className:"thm-text-error",children:t("destroy")})]})]}),d&&(0,we.jsxs)("span",{className:"f6 ml2",children:[(0,we.jsx)("span",{className:"mr2",children:M===1?t("bulkEditNotes.publicOne"):t("bulkEditNotes.publicMany",{count:M})}),(0,we.jsxs)("span",{className:"nowrap",children:[(0,we.jsx)("button",{type:"button",onClick:()=>{h(!1)},children:t("cancel")})," / ",(0,we.jsx)("button",{type:"submit",className:"thm-text-error",children:t("bulkEdit.makePublic")})]})]})]})]})}var hr=Q(be());var Is=bc(e=>({mode:{kind:"none"},tagcloud:{},setMode:t=>{e({mode:t})},setTagCloud:t=>{e({tagcloud:t})}}));function B1(e){switch(e.mode){case"top":return{kind:"top",expanded:e.expanded};case"lowerBound":{let t=typeof e.value=="number"?e.value:Number(e.value);return Number.isFinite(t)?{kind:"lowerBound",expanded:e.expanded,value:t}:{kind:"none"}}case"related":{let t=typeof e.value=="string"?e.value:"",n=t?t.split(" "):[];return{kind:"related",expanded:e.expanded,value:n}}case"relatedLowerBound":{let t=typeof e.value=="string"?e.value:"",n=t?t.split(" "):[],a=typeof e.lowerBound=="number"&&e.lowerBound>0?e.lowerBound:1;return{kind:"relatedLowerBound",expanded:e.expanded,value:n,lowerBound:a}}default:return{kind:"none"}}}function _h(e){switch(e.kind){case"top":return{mode:"top",value:null,expanded:e.expanded};case"lowerBound":return{mode:"lowerBound",value:e.value,expanded:e.expanded};case"related":return{mode:"related",value:e.value.join(" "),expanded:e.expanded};case"relatedLowerBound":return{mode:"relatedLowerBound",value:e.value.join(" "),expanded:e.expanded,lowerBound:e.lowerBound};case"none":return{mode:"none",value:"",expanded:!1}}}function Jn(e){return e.kind==="none"?!1:e.expanded}function Rc(e,t){return e.kind==="none"?e:L(T({},e),{expanded:t})}var Ge=Q(Le());function q1({initialMode:e}){let{t}=qe(),n=Is(g=>g.mode),a=Is(g=>g.tagcloud),i=Is(g=>g.setMode),l=Is(g=>g.setTagCloud);if(hr.default.useEffect(()=>{i(e)},[e]),hr.default.useEffect(()=>{async function g(k){if(k.kind==="none")return;let m=await kS(_h(k));l(m!=null?m:{})}g(n)},[n,l]),n.kind==="none")return(0,Ge.jsx)("div",{className:"tag_cloud"});let r=g=>({kind:"lowerBound",expanded:Jn(n),value:g}),s=n.kind==="related"||n.kind==="relatedLowerBound"?n.value:[],o=()=>({kind:"related",expanded:Jn(n),value:s}),u=g=>({kind:"relatedLowerBound",expanded:Jn(n),value:s,lowerBound:g});async function c(g){let k=Rc(n,g);i(k),Xe().dat.isowner&&await ES(_h(k))}async function f(g){g.kind==="top"&&n.kind==="top"||g.kind==="lowerBound"&&n.kind==="lowerBound"&&n.value===g.value?await c(!Jn(n)):i(Rc(g,!0))}function d(g){g.kind==="related"&&n.kind==="related"||g.kind==="relatedLowerBound"&&n.kind==="relatedLowerBound"&&n.lowerBound===g.lowerBound?c(!Jn(n)):i(Rc(g,!0))}let h=n.kind==="related"||n.kind==="relatedLowerBound",v=n.kind==="relatedLowerBound"?n.lowerBound:0;return(0,Ge.jsxs)("div",{className:"tag_cloud mv3",children:[(0,Ge.jsxs)("div",{className:"tag_cloud_header mb2",children:[h?(0,Ge.jsxs)(Ge.Fragment,{children:[(0,Ge.jsx)("button",{type:"button",className:"pa1 f7 link thm-hover-link-color mr1".concat(n.kind==="related"?" b":""),title:t("tagCloud.topTagsTitle"),onClick:()=>{d(o())},children:t("tagCloud.relatedTags")}),[[1,"tagCloud.allTitle"],[2,"tagCloud.min2Title"],[5,"tagCloud.min5Title"],[10,"tagCloud.min10Title"],[20,"tagCloud.min20Title"]].map(([g,k])=>(0,Ge.jsxs)(hr.default.Fragment,{children:[g!==1&&"\u2027",(0,Ge.jsx)("button",{type:"button",className:"pa1 f7 link thm-hover-link-color".concat(g===1?" ml2":"").concat(v===g?" b":""),title:t(k),onClick:()=>{d(u(g))},children:g===1?t("filter.all"):g})]},g))]}):(0,Ge.jsxs)(Ge.Fragment,{children:[(0,Ge.jsx)("button",{type:"button",className:"pa1 f7 link thm-hover-link-color mr1".concat(n.kind==="top"?" b":""),title:t("tagCloud.topTagsTitle"),onClick:()=>{f({kind:"top",expanded:Jn(n)})},children:t("tagCloud.topTags")}),[[1,"tagCloud.allTitle"],[2,"tagCloud.min2Title"],[5,"tagCloud.min5Title"],[10,"tagCloud.min10Title"],[20,"tagCloud.min20Title"]].map(([g,k])=>(0,Ge.jsxs)(hr.default.Fragment,{children:[g!==1&&"\u2027",(0,Ge.jsx)("button",{type:"button",className:"pa1 f7 link thm-hover-link-color".concat(g===1?" ml2":"").concat(n.kind==="lowerBound"&&n.value===g?" b":""),title:t(k),onClick:()=>{f(r(g))},children:g===1?t("filter.all"):g})]},g))]}),(0,Ge.jsx)("button",{type:"button",className:"pa1 ml2 f7 link thm-text-faded thm-hover-link-color",onClick:()=>{c(!Jn(n))},children:Jn(n)?t("tagCloud.hide"):t("tagCloud.show")})]}),Jn(n)?(0,Ge.jsx)("div",{className:"tag_cloud_body",children:tN(h?n.value:[],a)}):null]})}function tN(e,t){let n=Xe(),a=e.map(o=>o.toLowerCase()),i=o=>"".concat(Un(n.userR)).concat(o===""?"":"/t:".concat(o)),l=Object.values(t),r=l.length?Math.min(...l):1,s=l.length?Math.max(...l):1;return Object.entries(t).sort((o,u)=>o[0].toLowerCase().localeCompare(u[0].toLowerCase())).map(([o,u])=>{let c=o.toLowerCase(),f=H1(g=>Math.log(1+g),u,r,s,100,133),d=H1(g=>Math.log(1+g),u,r,s,.6,1),h={fontSize:"".concat(f.toString(),"%"),opacity:d},v=a.length===0?null:a.includes(c)?(0,Ge.jsx)("a",{href:i(a.filter(g=>g!==c).map(ul).join("+")),className:"link mr2 tag-exclude",children:"\u2296"}):(0,Ge.jsx)("a",{href:i(a.concat([c]).map(ul).join("+")),className:"link mr2 tag-include",children:"\u2295"});return(0,Ge.jsxs)(hr.default.Fragment,{children:[(0,Ge.jsx)("a",{href:i(ul(o)),className:"link tag mr1",style:h,children:o}),v]},o)})}function H1(e,t,n,a,i,l){let r=e(a-n);return(a-n<.01||r===0?1:e(t-n)/r)*(l-i)+i}var In=Q(Le());function V1(e){return document.querySelector(e)}function nN(){let e=document.querySelector("#content");e&&e.setAttribute("view-rendered","")}function aN({children:e}){return(0,j1.useLayoutEffect)(()=>{nN()},[]),e}function Pi(e,t){let n=V1(e);n&&(0,Dh.createRoot)(n).render((0,In.jsx)(aN,{children:t}))}var sD=e=>()=>{e.preventDefault(),zS()},oD=e=>t=>()=>{Pi(e,(0,In.jsx)(C1,{initial:t}))},uD=e=>t=>()=>{Pi(e,(0,In.jsx)(D1,{bcount:t}))},cD=e=>t=>()=>{let n=V1(e);n&&(0,Dh.createRoot)(n).render((0,In.jsx)(q1,{initialMode:B1(t)}))},fD=e=>t=>()=>{Pi(e,(0,In.jsx)(GS,{initial:t}))},dD=e=>t=>()=>{Pi(e,(0,In.jsx)(M1,{initial:t}))},pD=e=>t=>()=>{Pi(e,(0,In.jsx)(U1,{ncount:t}))},hD=e=>t=>()=>{Pi(e,(0,In.jsx)(z1,{initial:t}))},mD=e=>t=>()=>{Pi(e,(0,In.jsx)(qS,{initial:t}))};function gD(){function e(r){return r==="light"||r==="dark"}function t(){let r=document.documentElement.dataset.colorScheme;return r==="light"||r==="dark"?r:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function n(r){document.documentElement.dataset.colorScheme=r}let a="espial-color-scheme",i=window.localStorage.getItem(a);e(i)&&n(i);let l=document.querySelector("#color-scheme-toggle");l&&l.addEventListener("click",r=>{r.preventDefault();let s=t()==="dark"?"light":"dark";n(s),window.localStorage.setItem(a,s)})}export{gD as initColorSchemeToggle,sD as logoutE,mD as renderAccountSettings,fD as renderAddForm,oD as renderBookmarks,uD as renderBulkEdit,hD as renderNote,pD as renderNoteBulkEdit,dD as renderNotes,cD as renderTagCloud}; -/*! Bundled license information: - -react/cjs/react.production.js: - (** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -use-sync-external-store/cjs/use-sync-external-store-shim.production.js: - (** - * @license React - * use-sync-external-store-shim.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -scheduler/cjs/scheduler.production.js: - (** - * @license React - * scheduler.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -react-dom/cjs/react-dom.production.js: - (** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -react-dom/cjs/react-dom-client.production.js: - (** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -react/cjs/react-jsx-runtime.production.js: - (** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - *) - -ky/distribution/index.js: - (*! MIT License © Sindre Sorhus *) - -dompurify/dist/purify.es.mjs: - (*! @license DOMPurify 3.4.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.7/LICENSE *) -*/ -//# sourceMappingURL=app-REOQEZQK.min.js.map
− static/js/app-REOQEZQK.min.js.gz
binary file changed (132964 → absent bytes)
− static/js/app-REOQEZQK.min.js.map
@@ -1,7 +0,0 @@-{ - "version": 3, - "sources": ["../node_modules/react/cjs/react.production.js", "../node_modules/react/index.js", "../node_modules/void-elements/index.js", "../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js", "../node_modules/use-sync-external-store/shim/index.js", "../node_modules/scheduler/cjs/scheduler.production.js", "../node_modules/scheduler/index.js", "../node_modules/react-dom/cjs/react-dom.production.js", "../node_modules/react-dom/index.js", "../node_modules/react-dom/cjs/react-dom-client.production.js", "../node_modules/react-dom/client.js", "../node_modules/react/cjs/react-jsx-runtime.production.js", "../node_modules/react/jsx-runtime.js", "../node_modules/i18next/dist/esm/i18next.js", "../node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../node_modules/@babel/runtime/helpers/esm/typeof.js", "../node_modules/@babel/runtime/helpers/esm/toPrimitive.js", "../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js", "../node_modules/@babel/runtime/helpers/esm/createClass.js", "../node_modules/i18next-chained-backend/dist/esm/index.js", "../node_modules/i18next-http-backend/esm/index.js", "../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../node_modules/i18next-localstorage-backend/dist/esm/i18nextLocalStorageBackend.js", "../node_modules/react-i18next/dist/es/Trans.js", "../node_modules/react-i18next/dist/es/TransWithoutContext.js", "../node_modules/react-i18next/dist/es/utils.js", "../node_modules/react-i18next/dist/es/unescape.js", "../node_modules/react-i18next/dist/es/defaults.js", "../node_modules/react-i18next/dist/es/i18nInstance.js", "../node_modules/react-i18next/dist/es/context.js", "../node_modules/react-i18next/dist/es/initReactI18next.js", "../node_modules/react-i18next/dist/es/IcuTrans.js", "../node_modules/react-i18next/dist/es/IcuTransWithoutContext.js", "../node_modules/react-i18next/dist/es/IcuTransUtils/TranslationParserError.js", "../node_modules/react-i18next/dist/es/IcuTransUtils/htmlEntityDecoder.js", "../node_modules/react-i18next/dist/es/IcuTransUtils/tokenizer.js", "../node_modules/react-i18next/dist/es/IcuTransUtils/renderTranslation.js", "../node_modules/react-i18next/dist/es/useTranslation.js", "../node_modules/react-i18next/dist/es/withTranslation.js", "../node_modules/react-i18next/dist/es/I18nextProvider.js", "../node_modules/react-i18next/dist/es/withSSR.js", "../node_modules/react-i18next/dist/es/useSSR.js", "../../static/locales/en/translation.json", "../src/globals.ts", "../src/util.ts", "../src/i18n.ts", "../src/index.tsx", "../node_modules/ky/source/errors/KyError.ts", "../node_modules/ky/source/errors/HTTPError.ts", "../node_modules/ky/source/errors/NetworkError.ts", "../node_modules/ky/source/errors/NonError.ts", "../node_modules/ky/source/errors/ForceRetryError.ts", "../node_modules/ky/source/errors/SchemaValidationError.ts", "../node_modules/ky/source/errors/TimeoutError.ts", "../node_modules/ky/source/core/constants.ts", "../node_modules/ky/source/utils/body.ts", "../node_modules/ky/source/utils/is.ts", "../node_modules/ky/source/utils/merge.ts", "../node_modules/ky/source/utils/normalize.ts", "../node_modules/ky/source/utils/timeout.ts", "../node_modules/ky/source/utils/delay.ts", "../node_modules/ky/source/utils/options.ts", "../node_modules/ky/source/utils/is-network-error.ts", "../node_modules/ky/source/utils/type-guards.ts", "../node_modules/ky/source/core/Ky.ts", "../node_modules/ky/source/index.ts", "../src/api.ts", "../src/components/AccountSettings.tsx", "../src/components/AddForm.tsx", "../src/hooks/useTagSuggestions.ts", "../src/components/TagSuggestionsDropdown.tsx", "../src/components/BList.tsx", "../node_modules/zustand/esm/vanilla.mjs", "../node_modules/zustand/esm/react.mjs", "../src/stores/bookmarksStore.ts", "../src/components/BMark.tsx", "../node_modules/dompurify/src/utils.ts", "../node_modules/dompurify/src/tags.ts", "../node_modules/dompurify/src/attrs.ts", "../node_modules/dompurify/src/regexp.ts", "../node_modules/dompurify/src/purify.ts", "../node_modules/marked/src/defaults.ts", "../node_modules/marked/src/rules.ts", "../node_modules/marked/src/helpers.ts", "../node_modules/marked/src/Tokenizer.ts", "../node_modules/marked/src/Lexer.ts", "../node_modules/marked/src/Renderer.ts", "../node_modules/marked/src/TextRenderer.ts", "../node_modules/marked/src/Parser.ts", "../node_modules/marked/src/Hooks.ts", "../node_modules/marked/src/Instance.ts", "../node_modules/marked/src/marked.ts", "../src/components/Markdown.tsx", "../src/components/BulkEdit.tsx", "../src/components/NList.tsx", "../src/components/NNote.tsx", "../src/components/NoteBulkEdit.tsx", "../src/components/TagCloud.tsx", "../src/stores/tagCloudStore.ts", "../src/types.ts"], - "sourcesContent": ["/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.6\";\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n", "/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n", "/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n", "/**\n * @license React\n * scheduler.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n", "/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.2.6\";\n", "'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n", "/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$1) {\n control = x$1;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = workInProgress),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n return lanes & 261888;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n track(element);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n track(element);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nfunction noop$1() {}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$286;\n if (canUseDOM) {\n var isSupported$jscomp$inline_427 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_427) {\n var element$jscomp$inline_428 = document.createElement(\"div\");\n element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_427 =\n \"function\" === typeof element$jscomp$inline_428.oninput;\n }\n JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n } else JSCompiler_inline_result$jscomp$286 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$286 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n globalMostRecentTransitionTime = now();\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$1, noop$1);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (newChild = resolveLazy(newChild)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectTypeImpl(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n (\"forwards\" === node.memoizedProps.revealOrder ||\n \"backwards\" === node.memoizedProps.revealOrder ||\n \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n \"together\" === node.memoizedProps.revealOrder)\n ) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$60 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n gesture: update.gesture,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$60 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$66) {\n onActionError(actionQueue, node, error$66);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, deps) {\n tag = { tag: tag, create: create, deps: deps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (\n 0 === (renderLanes & 42) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$69 = enqueueUpdate(provider, fiber, lane);\n null !== root$69 &&\n (scheduleUpdateOnFiber(root$69, provider, lane),\n entangleTransitions(root$69, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n gesture: null,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 127) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n { destroy: void 0 },\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"_\" + identifierPrefix + \"R_\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n },\n useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\n }\n return newProps;\n}\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$74) {\n setTimeout(function () {\n throw e$74;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 31:\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 4096);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n var nextPrimaryChildren = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextPrimaryChildren },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.sibling = nextProps),\n (workInProgress.child = nextPrimaryChildren),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n }\n var prevState = current.memoizedState;\n if (\n null !== prevState &&\n ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n showFallback\n )),\n (nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = bailoutOffscreenComponent(null, nextProps)));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextPrimaryChildren))\n ) {\n JSCompiler_temp =\n nextPrimaryChildren.nextSibling &&\n nextPrimaryChildren.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n 0 !== nextProps && nextProps !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(nextPrimaryChildren) ||\n renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n isSuspenseInstancePending(nextPrimaryChildren)\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextPrimaryChildren.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (prevState = current.child),\n (digest = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n null !== digest\n ? (nextPrimaryChildren = createWorkInProgress(\n digest,\n nextPrimaryChildren\n ))\n : ((nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2)),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (nextPrimaryChildren = current.child.memoizedState),\n null === nextPrimaryChildren\n ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n : ((showFallback = nextPrimaryChildren.cachePool),\n null !== showFallback\n ? ((prevState = CacheContext._currentValue),\n (showFallback =\n showFallback.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : showFallback))\n : (showFallback = getSuspendedCache()),\n (nextPrimaryChildren = {\n baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n cachePool: showFallback\n })),\n (nextProps.memoizedState = nextPrimaryChildren),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode,\n treeForkCount\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode,\n treeForkCount: treeForkCount\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode),\n (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current,\n shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n push(suspenseStackCursor, suspenseContext);\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode,\n nextProps\n );\n break;\n case \"backwards\":\n case \"unstable_legacy-backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode,\n nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$102 = workInProgress.memoizedState;\n if (null !== state$102) {\n if (null !== state$102.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state$102 = 0 !== (renderLanes & workInProgress.childLanes);\n state$102 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state$102)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state$102) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (props = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (props[internalInstanceKey] = workInProgress),\n (props[internalPropsKey] = current),\n setInitialProperties(props, renderLanes, current),\n markNodeAsHoistable(props),\n (workInProgress.stateNode = props))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (props = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, props.value),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n if (type) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource)))\n if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$106 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$106\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$106.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags & 65011712),\n (subtreeFlags |= child$107.flags & 65011712),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n else\n for (child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags),\n (subtreeFlags |= child$107.flags),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \"<script>\\x3c/script>\";\n nextResource = nextResource.removeChild(\n nextResource.firstChild\n );\n break;\n case \"select\":\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(\"select\", {\n is: newProps.is\n })\n : ownerDocument.createElement(\"select\");\n newProps.multiple\n ? (nextResource.multiple = !0)\n : newProps.size && (nextResource.size = newProps.size);\n break;\n default:\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(type, { is: newProps.is })\n : ownerDocument.createElement(type);\n }\n }\n nextResource[internalInstanceKey] = workInProgress;\n nextResource[internalPropsKey] = newProps;\n a: for (\n ownerDocument = workInProgress.child;\n null !== ownerDocument;\n\n ) {\n if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n nextResource.appendChild(ownerDocument.stateNode);\n else if (\n 4 !== ownerDocument.tag &&\n 27 !== ownerDocument.tag &&\n null !== ownerDocument.child\n ) {\n ownerDocument.child.return = ownerDocument;\n ownerDocument = ownerDocument.child;\n continue;\n }\n if (ownerDocument === workInProgress) break a;\n for (; null === ownerDocument.sibling; ) {\n if (\n null === ownerDocument.return ||\n ownerDocument.return === workInProgress\n )\n break a;\n ownerDocument = ownerDocument.return;\n }\n ownerDocument.sibling.return = ownerDocument.return;\n ownerDocument = ownerDocument.sibling;\n }\n workInProgress.stateNode = nextResource;\n a: switch (\n (setInitialProperties(nextResource, type, newProps), type)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n newProps = !!newProps.autoFocus;\n break a;\n case \"img\":\n newProps = !0;\n break a;\n default:\n newProps = !1;\n }\n newProps && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n workInProgress.type,\n null === current ? null : current.memoizedProps,\n workInProgress.pendingProps,\n renderLanes\n );\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress, !0);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 31:\n renderLanes = workInProgress.memoizedState;\n if (null === current || null !== current.memoizedState) {\n newProps = popHydrationState(workInProgress);\n if (null !== renderLanes) {\n if (null === current) {\n if (!newProps) throw Error(formatProdErrorMessage(318));\n current = workInProgress.memoizedState;\n current = null !== current ? current.dehydrated : null;\n if (!current) throw Error(formatProdErrorMessage(557));\n current[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n current = !1;\n } else\n (renderLanes = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = renderLanes),\n (current = !0);\n if (!current) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n if (0 !== (workInProgress.flags & 128))\n throw Error(formatProdErrorMessage(558));\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n renderLanes &&\n ((newProps = workInProgress.child),\n (type = null),\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool),\n (nextResource = null),\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (nextResource = newProps.memoizedState.cachePool.pool),\n nextResource !== type && (newProps.flags |= 2048));\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n newProps = workInProgress.memoizedState;\n if (null === newProps) return bubbleProperties(workInProgress), null;\n type = 0 !== (workInProgress.flags & 128);\n nextResource = newProps.rendering;\n if (null === nextResource)\n if (type) cutOffTailIfNeeded(newProps, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n nextResource = findFirstSuspended(current);\n if (null !== nextResource) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(newProps, !1);\n current = nextResource.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n isHydrating &&\n pushTreeFork(workInProgress, newProps.treeForkCount);\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== newProps.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!type)\n if (\n ((current = findFirstSuspended(nextResource)), null !== current)\n ) {\n if (\n ((workInProgress.flags |= 128),\n (type = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(newProps, !0),\n null === newProps.tail &&\n \"hidden\" === newProps.tailMode &&\n !nextResource.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - newProps.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n newProps.isBackwards\n ? ((nextResource.sibling = workInProgress.child),\n (workInProgress.child = nextResource))\n : ((current = newProps.last),\n null !== current\n ? (current.sibling = nextResource)\n : (workInProgress.child = nextResource),\n (newProps.last = nextResource));\n }\n if (null !== newProps.tail)\n return (\n (current = newProps.tail),\n (newProps.rendering = current),\n (newProps.tail = current.sibling),\n (newProps.renderingStartTime = now()),\n (current.sibling = null),\n (renderLanes = suspenseStackCursor.current),\n push(\n suspenseStackCursor,\n type ? (renderLanes & 1) | 2 : renderLanes & 1\n ),\n isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n current\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return null;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 31:\n if (null !== workInProgress.memoizedState) {\n popSuspenseHandler(workInProgress);\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 31:\n null !== interruptedWork.memoizedState &&\n popSuspenseHandler(interruptedWork);\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$140) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$140);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(node, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(node),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (\n 4 !== tag &&\n (27 === tag &&\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (\n 4 !== tag &&\n (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n if (\n 0 !== (root & 4) &&\n ((root = firstChild.updateQueue),\n (root = null !== root ? root.events : null),\n null !== root)\n )\n for (\n JSCompiler_temp = 0;\n JSCompiler_temp < root.length;\n JSCompiler_temp++\n )\n (anchorOffset = root[JSCompiler_temp]),\n (anchorOffset.ref.impl = anchorOffset.nextImpl);\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$139) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$139\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 31:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n prevProps = offscreenSubtreeIsHidden;\n var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevProps;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n break;\n case 30:\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearHydrationBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearHydrationBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n ) {\n finishedRoot = finishedRoot.dehydrated;\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 31:\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n wakeable.then(retry, retry);\n }\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13886)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 31:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n hoistableRoot = null !== finishedWork.memoizedState;\n var wasHidden = null !== current && null !== current.memoizedState,\n prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n if (flags & 8192)\n a: for (\n root = finishedWork.stateNode,\n root._visibility = hoistableRoot\n ? root._visibility & -2\n : root._visibility | 1,\n hoistableRoot &&\n (null === current ||\n wasHidden ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n current = null,\n root = finishedWork;\n ;\n\n ) {\n if (5 === root.tag || 26 === root.tag) {\n if (null === current) {\n wasHidden = current = root;\n try {\n if (((currentResource = wasHidden.stateNode), hoistableRoot))\n (maybeNodes = currentResource.style),\n \"function\" === typeof maybeNodes.setProperty\n ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n : (maybeNodes.display = \"none\");\n else {\n i = wasHidden.stateNode;\n var styleProp = wasHidden.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n i.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n wasHidden.stateNode.nodeValue = hoistableRoot\n ? \"\"\n : wasHidden.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (18 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n var instance = wasHidden.stateNode;\n hoistableRoot\n ? hideOrUnhideDehydratedBoundary(instance, !0)\n : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n case 5:\n var parent$141 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n var before$142 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n break;\n case 3:\n case 4:\n var parent$143 = hostParentFiber.stateNode.containerInfo,\n before$144 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$144,\n parent$143\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 27:\n releaseSingletonInstance(finishedWork.stateNode);\n case 26:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 31:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitActivityHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 31:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256) || !1\n ));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects &&\n (0 !== (parentFiber.subtreeFlags & 10256) || !1);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(\n parentFiber,\n committedLanes,\n suspendedState\n) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(\n parentFiber,\n committedLanes,\n suspendedState\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n fiber,\n committedLanes,\n suspendedState\n) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n suspendedState,\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n },\n cacheSignal: function () {\n return readContext(CacheContext).controller.signal;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n globalMostRecentTransitionTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n : null !== ReactSharedInternals.T\n ? requestTransitionLane()\n : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n if (0 === workInProgressDeferredLane)\n if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n var lane = nextTransitionDeferredLane;\n nextTransitionDeferredLane <<= 1;\n 0 === (nextTransitionDeferredLane & 3932160) &&\n (nextTransitionDeferredLane = 262144);\n workInProgressDeferredLane = lane;\n } else workInProgressDeferredLane = 536870912;\n lane = suspenseHandlerStackCursor.current;\n null !== lane && (lane.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 127) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n pendingEffectsLanes = lanes;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n \"Throttled\",\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n null,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n suspendedCommitReason = finishedWork.subtreeFlags;\n if (\n suspendedCommitReason & 8192 ||\n 16785408 === (suspendedCommitReason & 16785408)\n ) {\n suspendedCommitReason = {\n stylesheets: null,\n count: 0,\n imgCount: 0,\n imgBytes: 0,\n suspenseyImages: [],\n waitingForImages: !0,\n waitingForViewTransition: !1,\n unsuspend: noop$1\n };\n accumulateSuspenseyCommitOnFiber(\n finishedWork,\n lanes,\n suspendedCommitReason\n );\n var timeoutOffset =\n (lanes & 62914560) === lanes\n ? globalMostRecentFallbackTime - now()\n : (lanes & 4194048) === lanes\n ? globalMostRecentTransitionTime - now()\n : 0;\n timeoutOffset = waitForCommitToBeReady(\n suspendedCommitReason,\n timeoutOffset\n );\n if (null !== timeoutOffset) {\n pendingEffectsLanes = lanes;\n root.cancelPendingCommit = timeoutOffset(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n suspendedCommitReason,\n null,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$6 = 31 - clz32(lanes),\n lane = 1 << index$6;\n didAttemptEntireTree[index$6] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState$1 = null),\n (thenableIndexCounter$1 = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n pendingEffectsLanes = 0;\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n lanes |= root[index$4];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction shouldRemainOnPreviousScreen() {\n var handler = suspenseHandlerStackCursor.current;\n return null === handler\n ? !0\n : (workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null === shellBoundary\n ? !0\n : !1\n : (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n ? handler === shellBoundary\n : !1;\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$165) {\n handleThrow(root, thrownValue$165);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (\n resource\n ? preloadResource(resource)\n : hostFiber.stateNode.complete\n ) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$167) {\n handleThrow(root, thrownValue$167);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState$1 = null;\n thenableIndexCounter$1 = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects();\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n }\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root);\n var priorSelectionInformation = selectionInformation,\n curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = priorSelectionInformation.focusedElem,\n priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n var remainingLanes = root.pendingLanes;\n 0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n remainingLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = remainingLanes);\n }\n }\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n remainingLanes = root.pendingLanes;\n 0 !== (lanes & 261930) && 0 !== (remainingLanes & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects() {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects();\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 31:\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$170 = firstScheduledRoot; null !== root$170; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$170.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$170.suspendedLanes,\n pingedLanes = root$170.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$170,\n root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$170.cancelPendingCommit ||\n -1 !== root$170.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n root$170 = root$170.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane);\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n 0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$5 = 31 - clz32(lanes),\n lane = 1 << index$5,\n expirationTime = expirationTimes[index$5];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$5] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n if (0 === currentEventTransitionLane) {\n var actionScopeLane = currentEntangledLane;\n 0 === actionScopeLane &&\n ((actionScopeLane = nextTransitionUpdateLane),\n (nextTransitionUpdateLane <<= 1),\n 0 === (nextTransitionUpdateLane & 261888) &&\n (nextTransitionUpdateLane = 256));\n currentEventTransitionLane = actionScopeLane;\n }\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1577 = 0;\n i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n i$jscomp$inline_1577++\n) {\n var eventName$jscomp$inline_1578 =\n simpleEventPluginEvents[i$jscomp$inline_1577],\n domEventName$jscomp$inline_1579 =\n eventName$jscomp$inline_1578.toLowerCase(),\n capitalizedEvent$jscomp$inline_1580 =\n eventName$jscomp$inline_1578[0].toUpperCase() +\n eventName$jscomp$inline_1578.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1579,\n \"on\" + capitalizedEvent$jscomp$inline_1580\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = getParent;\n reactEventName = SyntheticEventCtor;\n instance = reactEventType;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = inCapturePhase(_instance)\n )\n lastHostComponent++;\n _instance = 0;\n for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n _instance++;\n for (; 0 < lastHostComponent - _instance; )\n (reactEventName = inCapturePhase(reactEventName)),\n lastHostComponent--;\n for (; 0 < _instance - lastHostComponent; )\n (instance = inCapturePhase(instance)), _instance--;\n for (; lastHostComponent--; ) {\n if (\n reactEventName === instance ||\n (null !== instance && reactEventName === instance.alternate)\n ) {\n inCapturePhase = reactEventName;\n break b;\n }\n reactEventName = inCapturePhase(reactEventName);\n instance = inCapturePhase(instance);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n \"string\" === typeof value\n ? \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n \"body\" !== tag &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n \"string\" === typeof value\n ? setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n }\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$184 = props[hasSrc];\n if (null != propValue$184)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$184;\n break;\n case \"type\":\n propValue = propValue$184;\n break;\n case \"checked\":\n checked = propValue$184;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$184;\n break;\n case \"value\":\n propKey = propValue$184;\n break;\n case \"defaultValue\":\n defaultValue = propValue$184;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$184)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$184, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$184 in props)\n props.hasOwnProperty(propValue$184) &&\n ((hasSrc = props[propValue$184]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$184,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$201 in nextProps) {\n var propKey = nextProps[propKey$201];\n lastProp = lastProps[propKey$201];\n if (\n nextProps.hasOwnProperty(propKey$201) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$201) {\n case \"type\":\n type = propKey;\n break;\n case \"name\":\n name = propKey;\n break;\n case \"checked\":\n checked = propKey;\n break;\n case \"defaultChecked\":\n defaultChecked = propKey;\n break;\n case \"value\":\n value = propKey;\n break;\n case \"defaultValue\":\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$201,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$201 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n propKey$201 = type;\n break;\n case \"defaultValue\":\n defaultValue = type;\n break;\n case \"multiple\":\n value = type;\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$201\n ? updateOptions(domElement, !!lastProps, propKey$201, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$201 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n propKey$201 = name;\n break;\n case \"defaultValue\":\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$201, propKey);\n return;\n case \"option\":\n for (var propKey$217 in lastProps)\n if (\n ((propKey$201 = lastProps[propKey$217]),\n lastProps.hasOwnProperty(propKey$217) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$217))\n )\n switch (propKey$217) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$217,\n null,\n nextProps,\n propKey$201\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$201 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$201 &&\n \"function\" !== typeof propKey$201 &&\n \"symbol\" !== typeof propKey$201;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$222 in lastProps)\n (propKey$201 = lastProps[propKey$222]),\n lastProps.hasOwnProperty(propKey$222) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$222) &&\n setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n for (checked in nextProps)\n if (\n ((propKey$201 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$201)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$227 in lastProps)\n (propKey$201 = lastProps[propKey$227]),\n lastProps.hasOwnProperty(propKey$227) &&\n void 0 !== propKey$201 &&\n !nextProps.hasOwnProperty(propKey$227) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$227,\n void 0,\n nextProps,\n propKey$201\n );\n for (defaultChecked in nextProps)\n (propKey$201 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$201 === propKey ||\n (void 0 === propKey$201 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$201,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$232 in lastProps)\n (propKey$201 = lastProps[propKey$232]),\n lastProps.hasOwnProperty(propKey$232) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$232) &&\n setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n for (lastProp in nextProps)\n (propKey$201 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$201 === propKey ||\n (null == propKey$201 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n switch (initiatorType) {\n case \"css\":\n case \"script\":\n case \"font\":\n case \"img\":\n case \"image\":\n case \"input\":\n case \"link\":\n return !0;\n default:\n return !1;\n }\n}\nfunction estimateBandwidth() {\n if (\"function\" === typeof performance.getEntriesByType) {\n for (\n var count = 0,\n bits = 0,\n resourceEntries = performance.getEntriesByType(\"resource\"),\n i = 0;\n i < resourceEntries.length;\n i++\n ) {\n var entry = resourceEntries[i],\n transferSize = entry.transferSize,\n initiatorType = entry.initiatorType,\n duration = entry.duration;\n if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n initiatorType = 0;\n duration = entry.responseEnd;\n for (i += 1; i < resourceEntries.length; i++) {\n var overlapEntry = resourceEntries[i],\n overlapStartTime = overlapEntry.startTime;\n if (overlapStartTime > duration) break;\n var overlapTransferSize = overlapEntry.transferSize,\n overlapInitiatorType = overlapEntry.initiatorType;\n overlapTransferSize &&\n isLikelyStaticResource(overlapInitiatorType) &&\n ((overlapEntry = overlapEntry.responseEnd),\n (initiatorType +=\n overlapTransferSize *\n (overlapEntry < duration\n ? 1\n : (duration - overlapStartTime) /\n (overlapEntry - overlapStartTime))));\n }\n --i;\n bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n count++;\n if (10 < count) break;\n }\n }\n if (0 < count) return bits / count / 1e6;\n }\n return navigator.connection &&\n ((count = navigator.connection.downlink), \"number\" === typeof count)\n ? count\n : 5;\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearHydrationBoundary(parentInstance, hydrationInstance) {\n var node = hydrationInstance,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node || \"/&\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(hydrationInstance);\n return;\n }\n depth--;\n } else if (\n \"$\" === node ||\n \"$?\" === node ||\n \"$~\" === node ||\n \"$!\" === node ||\n \"&\" === node\n )\n depth++;\n else if (\"html\" === node)\n releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n else if (\"head\" === node) {\n node = parentInstance.ownerDocument.head;\n releaseSingletonInstance(node);\n for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n nodeName = node$jscomp$0.nodeName;\n node$jscomp$0[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n node.removeChild(node$jscomp$0);\n node$jscomp$0 = nextNode$jscomp$0;\n }\n } else\n \"body\" === node &&\n releaseSingletonInstance(parentInstance.ownerDocument.body);\n node = nextNode;\n } while (node);\n retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n var node = suspenseInstance;\n suspenseInstance = 0;\n do {\n var nextNode = node.nextSibling;\n 1 === node.nodeType\n ? isHidden\n ? ((node._stashedDisplay = node.style.display),\n (node.style.display = \"none\"))\n : ((node.style.display = node._stashedDisplay || \"\"),\n \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n : 3 === node.nodeType &&\n (isHidden\n ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n : (node.nodeValue = node._stashedText || \"\"));\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node))\n if (0 === suspenseInstance) break;\n else suspenseInstance--;\n else\n (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n suspenseInstance++;\n node = nextNode;\n } while (node);\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n for (; 8 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$~\" === instance.data) instance._reactRetry = callback;\n else if (\"$?\" !== instance.data || \"loading\" !== ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"$~\" === nodeType ||\n \"&\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n hydrationInstance = hydrationInstance.nextSibling;\n for (var depth = 0; hydrationInstance; ) {\n if (8 === hydrationInstance.nodeType) {\n var data = hydrationInstance.data;\n if (\"/$\" === data || \"/&\" === data) {\n if (0 === depth)\n return getNextHydratable(hydrationInstance.nextSibling);\n depth--;\n } else\n (\"$\" !== data &&\n \"$!\" !== data &&\n \"$?\" !== data &&\n \"$~\" !== data &&\n \"&\" !== data) ||\n depth++;\n }\n hydrationInstance = hydrationInstance.nextSibling;\n }\n return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\n \"$\" === data ||\n \"$!\" === data ||\n \"$?\" === data ||\n \"$~\" === data ||\n \"&\" === data\n ) {\n if (0 === depth) return targetInstance;\n depth--;\n } else (\"/$\" !== data && \"/&\" !== data) || depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : 9 === container.nodeType\n ? container\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$243 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$244 = styles$243.get(type);\n resource$244 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$244 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$243.set(type, resource$244),\n (styles$243 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$243._p &&\n ((resource$244.instance = styles$243),\n (resource$244.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$243 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$244.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$244;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$249 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$249)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$249),\n markNodeAsHoistable(instance$249),\n instance$249\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$249 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$249);\n var linkInstance = instance$249;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$249, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$249, props.precedence, hoistableRoot);\n return (resource.instance = instance$249);\n case \"script\":\n instance$249 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$249)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$249)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nfunction suspendResource(state, hoistableRoot, resource, props) {\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count || 0 < state.imgCount\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4 + timeoutOffset);\n 0 < state.imgBytes &&\n 0 === estimatedBytesWithinLimit &&\n (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n var imgTimer = setTimeout(\n function () {\n state.waitingForImages = !1;\n if (\n 0 === state.count &&\n (state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets),\n state.unsuspend)\n ) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n },\n (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n timeoutOffset\n );\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n clearTimeout(imgTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(fiber, lane);\n null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n markRetryLaneIfNotHydrated(fiber, lane);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 31:\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (31 === tag) {\n targetNode = getActivityInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (31 === targetInst) {\n if (\n ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction defaultOnDefaultTransitionIndicator() {\n function handleNavigate(event) {\n event.canIntercept &&\n \"react-transition\" === event.info &&\n event.intercept({\n handler: function () {\n return new Promise(function (resolve) {\n return (pendingResolve = resolve);\n });\n },\n focusReset: \"manual\",\n scroll: \"manual\"\n });\n }\n function handleNavigateComplete() {\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n isCancelled || setTimeout(startFakeNavigation, 20);\n }\n function startFakeNavigation() {\n if (!isCancelled && !navigation.transition) {\n var currentEntry = navigation.currentEntry;\n currentEntry &&\n null != currentEntry.url &&\n navigation.navigate(currentEntry.url, {\n state: currentEntry.getState(),\n info: \"react-transition\",\n history: \"replace\"\n });\n }\n }\n if (\"object\" === typeof navigation) {\n var isCancelled = !1,\n pendingResolve = null;\n navigation.addEventListener(\"navigate\", handleNavigate);\n navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n setTimeout(startFakeNavigation, 100);\n return function () {\n isCancelled = !0;\n navigation.removeEventListener(\"navigate\", handleNavigate);\n navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n };\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1840 = React.version;\nif (\n \"19.2.6\" !==\n isomorphicReactPackageVersion$jscomp$inline_1840\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1840,\n \"19.2.6\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2347 = {\n bundleType: 0,\n version: \"19.2.6\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.2.6\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2348.isDisabled &&\n hook$jscomp$inline_2348.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2348.inject(\n internals$jscomp$inline_2347\n )),\n (injectedHook = hook$jscomp$inline_2348);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n null,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.2.6\";\n", "'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n", "/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n", "const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return String(object);\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.includes('###') ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nconst _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => !nsSeparator.includes(c) && !keySeparator.includes(c));\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].includes(typeof next) && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace(/_/g, '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n args = args.map(a => isString(a) ? a.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, ' ') : a);\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n once(event, listener) {\n const wrapper = (...args) => {\n listener(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n return this;\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(event, ...args);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (!this.options.ns.includes(ns)) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.includes('.')) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.includes('.')) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.includes('.')) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.includes('.')) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n const keySeparator = opts?.keySeparator ?? '.';\n const nsSeparator = opts?.nsSeparator ?? ':';\n const strict = opts?.enableSelector === 'strict';\n if (path.length > 1 && nsSeparator) {\n const ns = opts?.ns;\n const nsList = strict ? Array.isArray(ns) ? ns : ns ? [ns] : null : Array.isArray(ns) ? ns : null;\n if (nsList) {\n const candidates = strict ? nsList : nsList.length > 1 ? nsList.slice(1) : [];\n if (candidates.includes(path[0])) {\n return `${path[0]}${nsSeparator}${path.slice(1).join(keySeparator)}`;\n }\n }\n }\n return path.join(keySeparator);\n}\n\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n this.checkedLoadedFor = {};\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n if (resolved?.res === undefined) return false;\n const isObject = shouldHandleAsObject(resolved.res);\n if (opt.returnObjects === false && isObject) {\n return false;\n }\n return true;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.includes(nsSeparator);\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.includes(parts[0])) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : String(k));\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && !noObject.includes(resType) && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, needsPluralHandling && !updateMissing ? `${key}${this.pluralResolver.getSuffix(lng, opt.count, opt)}` : key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && !suffixes.includes(`${this.options.pluralSeparator}zero`)) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n if (Array.isArray(keys)) keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : k);\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!this.checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n this.checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && option.startsWith(prefix) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.includes('-')) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.includes(code);\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return true;\n if (!supportedLng.includes('-') && !lngOnly.includes('-')) return false;\n if (supportedLng.includes('-') && !lngOnly.includes('-') && supportedLng.slice(0, supportedLng.indexOf('-')) === lngOnly) return true;\n if (supportedLng.startsWith(lngOnly) && lngOnly.length > 1) return true;\n return false;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.includes('-') || code.includes('_'))) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (!codes.includes(fc)) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (typeof Intl === 'undefined') {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix ? regexEscape(unescapePrefix) : '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix ? regexEscape(unescapeSuffix) : '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (!key.includes(this.formatSeparator)) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n if (!this.escapeValue && typeof str === 'string' && /\\$t\\([^)]*\\{[^}]*\\{\\{/.test(str)) {\n this.logger.warn('nesting options string contains interpolated variables with escapeValue: false \u2014 ' + 'if any of those values are attacker-controlled they can inject additional ' + 'nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing ' + 'it to t(), or keep escapeValue: true.');\n }\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (!key.includes(sep)) return key;\n const c = key.split(new RegExp(`${regexEscape(sep)}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || (matchedDoubleQuotes?.length ?? 0) % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.includes(this.prefix)) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.includes('(')) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].slice(0, -1);\n if (formatName === 'currency' && !optStr.includes(':')) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && !optStr.includes(':')) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n if (!format) return value;\n if (value == null) return value;\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && !formats[0].includes(')') && formats.find(f => f.includes(')'))) {\n const lastIndex = formats.findIndex(f => f.includes(')'));\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read(lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n enableSelector: false,\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && !options.supportedLngs.includes('cimode')) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (!options.ns.includes('translation')) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator\n });\n if (formatter) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if ((this.languages || this.isLanguageChangingTo) && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (!toLoad.includes(l)) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].includes(l)) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].includes(lngInLngs)) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && !this.languages.includes(l) && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix, fixedOpts) {\n const scopeNs = fixedOpts?.scopeNs;\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n const explicitCallNs = o.ns !== undefined && o.ns !== null;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const selectorOpts = {\n ...this.options,\n ...o\n };\n if (Array.isArray(scopeNs) && !explicitCallNs) selectorOpts.ns = scopeNs;\n if (typeof o.keyPrefix === 'function') o.keyPrefix = keysFromSelector(o.keyPrefix, selectorOpts);\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, selectorOpts);\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, selectorOpts);\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (!this.options.ns.includes(n)) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => !preloaded.includes(lng) && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.includes(languageUtils.getLanguagePartFromCode(lng)) || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n const instance = new I18n(options, callback);\n instance.createInstance = I18n.createInstance;\n return instance;\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n if (options.interpolation) {\n const defOpts = get();\n const mergedInterpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation,\n ...options.interpolation\n };\n const mergedForInterpolator = {\n ...mergedOptions,\n interpolation: mergedInterpolation\n };\n clone.services.interpolator = new Interpolator(mergedForInterpolator);\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n", "function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };", "function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };", "import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };", "import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };", "import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nfunction createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n}\n\nfunction getDefaults() {\n return {\n handleEmptyResourcesAsFailed: true,\n cacheHitMode: 'none',\n retryOnFailure: false\n // reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000\n // refreshExpirationTime: 60 * 60 * 1000\n };\n}\nfunction handleCorrectReadFunction(backend, language, namespace, resolver) {\n var fc = backend.read.bind(backend);\n if (fc.length === 2) {\n // no callback\n try {\n var r = fc(language, namespace);\n if (r && typeof r.then === 'function') {\n // promise\n r.then(function (data) {\n return resolver(null, data);\n })[\"catch\"](resolver);\n } else {\n // sync\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n\n // normal with callback\n fc(language, namespace, resolver);\n}\nvar Backend = /*#__PURE__*/function () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nextOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, Backend);\n this.backends = [];\n this.type = 'backend';\n this.allOptions = i18nextOptions;\n this.init(services, options);\n }\n return _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nextOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n this.allOptions = i18nextOptions;\n if (this.options.backends && this.options.backends.length > 1 && (this.allOptions.saveMissing || this.allOptions.updateMissing)) {\n if (this.services && this.services.logger) {\n this.services.logger.warn('i18next-chained-backend: Using multiple backends in combination with saveMissing/updateMissing is not recommended, as it may trigger based on stale data.');\n }\n }\n this.options.backends && this.options.backends.forEach(function (b, i) {\n _this.backends[i] = _this.backends[i] || createClassOnDemand(b);\n _this.backends[i].init(services, _this.options.backendOptions && _this.options.backendOptions[i] || {}, i18nextOptions);\n });\n if (this.services && this.options.reloadInterval) {\n setInterval(function () {\n return _this.reload();\n }, this.options.reloadInterval);\n }\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var _this2 = this;\n var bLen = this.backends.length;\n var _loadPosition = function loadPosition(pos) {\n if (pos >= bLen) return callback(new Error('non of the backend loaded data'), _this2.options.retryOnFailure); // failed, signal retry to i18next only if explicitly enabled\n var isLastBackend = pos === bLen - 1;\n var lengthCheckAmount = _this2.options.handleEmptyResourcesAsFailed && !isLastBackend ? 0 : -1;\n var backend = _this2.backends[pos];\n if (backend.read) {\n handleCorrectReadFunction(backend, language, namespace, function (err, data, savedAt) {\n if (!err && data && Object.keys(data).length > lengthCheckAmount) {\n callback(null, data, pos);\n _savePosition(pos - 1, data); // save one in front\n if (backend.save && _this2.options.cacheHitMode && ['refresh', 'refreshAndUpdateStore'].indexOf(_this2.options.cacheHitMode) > -1) {\n if (savedAt && _this2.options.refreshExpirationTime && savedAt + _this2.options.refreshExpirationTime > Date.now()) return;\n var nextBackend = _this2.backends[pos + 1];\n if (nextBackend && nextBackend.read) {\n handleCorrectReadFunction(nextBackend, language, namespace, function (err, data) {\n if (err) return;\n if (!data) return;\n if (Object.keys(data).length <= lengthCheckAmount) return;\n _savePosition(pos, data);\n if (_this2.options.cacheHitMode !== 'refreshAndUpdateStore') return;\n if (_this2.services && _this2.services.resourceStore) {\n _this2.services.resourceStore.addResourceBundle(language, namespace, data);\n }\n });\n }\n }\n } else {\n _loadPosition(pos + 1); // try load from next\n }\n });\n } else {\n _loadPosition(pos + 1); // try load from next\n }\n };\n var _savePosition = function savePosition(pos, data) {\n if (pos < 0) return;\n var backend = _this2.backends[pos];\n if (backend.save) {\n backend.save(language, namespace, data);\n _savePosition(pos - 1, data);\n } else {\n _savePosition(pos - 1, data);\n }\n };\n _loadPosition(0);\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue) {\n var clb = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function () {};\n var opts = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n this.backends.forEach(function (b) {\n if (!b.create) return;\n var fc = b.create.bind(b);\n if (fc.length < 6) {\n // no callback\n try {\n var r;\n if (fc.length === 5) {\n // future callback-less api for i18next-locize-backend\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n // promise\n r.then(function (data) {\n return clb(null, data);\n })[\"catch\"](clb);\n } else {\n // sync\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n return;\n }\n\n // normal with callback\n fc(languages, namespace, key, fallbackValue, clb /* unused callback */, opts);\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this3 = this;\n var _this$services = this.services,\n backendConnector = _this$services.backendConnector,\n languageUtils = _this$services.languageUtils,\n logger = _this$services.logger;\n var currentLanguage = backendConnector.language;\n if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return; // avoid loading resources for cimode\n\n var toLoad = [];\n var append = function append(lng) {\n var lngs = languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n append(currentLanguage);\n if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n return append(l);\n });\n toLoad.forEach(function (lng) {\n _this3.allOptions.ns.forEach(function (ns) {\n backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n });\n });\n });\n }\n }]);\n}();\nBackend.type = 'backend';\n\nexport { Backend as default };\n", "//#region lib/utils.js\nconst arr = [];\narr.forEach;\narr.slice;\nconst UNSAFE_KEYS$1 = [\n\t\"__proto__\",\n\t\"constructor\",\n\t\"prototype\"\n];\nfunction isSafeUrlSegmentBase(v) {\n\tif (typeof v !== \"string\") return false;\n\tif (v.length === 0 || v.length > 128) return false;\n\tif (UNSAFE_KEYS$1.indexOf(v) > -1) return false;\n\tif (v.indexOf(\"..\") > -1) return false;\n\tif (v.indexOf(\"\\\\\") > -1) return false;\n\tif (/[?#%\\s@]/.test(v)) return false;\n\tif (/[\\x00-\\x1F\\x7F]/.test(v)) return false;\n\treturn true;\n}\nfunction isSafeLangUrlSegment(v) {\n\tif (!isSafeUrlSegmentBase(v)) return false;\n\tif (v.indexOf(\"/\") > -1) return false;\n\treturn true;\n}\nfunction isSafeNsUrlSegment(v) {\n\treturn isSafeUrlSegmentBase(v);\n}\nconst SAFETY_CHECK_BY_KEY = {\n\tlng: isSafeLangUrlSegment,\n\tns: isSafeNsUrlSegment\n};\nfunction sanitizeLogValue(v) {\n\tif (typeof v !== \"string\") return v;\n\treturn v.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, \" \");\n}\nfunction redactUrlCredentials(u) {\n\tif (typeof u !== \"string\" || u.length === 0) return u;\n\ttry {\n\t\tconst parsed = new URL(u);\n\t\tif (parsed.username || parsed.password) {\n\t\t\tparsed.username = \"\";\n\t\t\tparsed.password = \"\";\n\t\t\treturn parsed.toString();\n\t\t}\n\t\treturn u;\n\t} catch (e) {\n\t\treturn u.replace(/(\\/\\/)[^/@\\s]+@/g, \"$1\");\n\t}\n}\nfunction hasXMLHttpRequest() {\n\treturn typeof XMLHttpRequest === \"function\" || typeof XMLHttpRequest === \"object\";\n}\n/**\n* Determine whether the given `maybePromise` is a Promise.\n*\n* @param {*} maybePromise\n*\n* @returns {Boolean}\n*/\nfunction isPromise(maybePromise) {\n\treturn !!maybePromise && typeof maybePromise.then === \"function\";\n}\n/**\n* Convert any value to a Promise than will resolve to this value.\n*\n* @param {*} maybePromise\n*\n* @returns {Promise}\n*/\nfunction makePromise(maybePromise) {\n\tif (isPromise(maybePromise)) return maybePromise;\n\treturn Promise.resolve(maybePromise);\n}\nconst interpolationRegexp = /\\{\\{(.+?)\\}\\}/g;\nfunction interpolateUrl(str, data) {\n\tlet unsafe = false;\n\tconst result = str.replace(interpolationRegexp, (match, key) => {\n\t\tconst k = key.trim();\n\t\tif (UNSAFE_KEYS$1.indexOf(k) > -1) return match;\n\t\tconst value = data[k];\n\t\tif (value == null) return match;\n\t\tconst check = SAFETY_CHECK_BY_KEY[k] || isSafeLangUrlSegment;\n\t\tconst segments = String(value).split(\"+\");\n\t\tfor (const seg of segments) if (!check(seg)) {\n\t\t\tunsafe = true;\n\t\t\treturn match;\n\t\t}\n\t\treturn segments.join(\"+\");\n\t});\n\treturn unsafe ? null : result;\n}\n//#endregion\n//#region lib/request.js\nconst g = typeof globalThis !== \"undefined\" ? globalThis : typeof global !== \"undefined\" ? global : typeof window !== \"undefined\" ? window : void 0;\nlet fetchApi;\nif (typeof fetch === \"function\") fetchApi = fetch;\nelse if (g && typeof g.fetch === \"function\") fetchApi = g.fetch;\nconst XmlHttpRequestApi = hasXMLHttpRequest() && g ? g.XMLHttpRequest : void 0;\nconst ActiveXObjectApi = typeof ActiveXObject === \"function\" && g ? g.ActiveXObject : void 0;\nconst UNSAFE_KEYS = [\n\t\"__proto__\",\n\t\"constructor\",\n\t\"prototype\"\n];\nconst addQueryString = (url, params) => {\n\tif (params && typeof params === \"object\") {\n\t\tlet queryString = \"\";\n\t\tfor (const paramName of Object.keys(params)) {\n\t\t\tif (UNSAFE_KEYS.indexOf(paramName) > -1) continue;\n\t\t\tqueryString += \"&\" + encodeURIComponent(paramName) + \"=\" + encodeURIComponent(params[paramName]);\n\t\t}\n\t\tif (!queryString) return url;\n\t\turl = url + (url.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + queryString.slice(1);\n\t}\n\treturn url;\n};\nconst fetchIt = (url, fetchOptions, callback, altFetch) => {\n\tconst resolver = (response) => {\n\t\tif (!response.ok) return callback(response.statusText || \"Error\", { status: response.status });\n\t\tresponse.text().then((data) => {\n\t\t\tcallback(null, {\n\t\t\t\tstatus: response.status,\n\t\t\t\tdata\n\t\t\t});\n\t\t}).catch(callback);\n\t};\n\tif (altFetch) {\n\t\tconst altResponse = altFetch(url, fetchOptions);\n\t\tif (altResponse instanceof Promise) {\n\t\t\taltResponse.then(resolver).catch(callback);\n\t\t\treturn;\n\t\t}\n\t}\n\tif (typeof fetch === \"function\") fetch(url, fetchOptions).then(resolver).catch(callback);\n\telse fetchApi(url, fetchOptions).then(resolver).catch(callback);\n};\nconst requestWithFetch = (options, url, payload, callback) => {\n\tif (options.queryStringParams) url = addQueryString(url, options.queryStringParams);\n\tconst headers = { ...typeof options.customHeaders === \"function\" ? options.customHeaders() : options.customHeaders };\n\tif (typeof window === \"undefined\" && typeof global !== \"undefined\" && typeof global.process !== \"undefined\" && global.process.versions && global.process.versions.node) headers[\"User-Agent\"] = `i18next-http-backend (node/${global.process.version}; ${global.process.platform} ${global.process.arch})`;\n\tif (payload) headers[\"Content-Type\"] = \"application/json\";\n\tconst reqOptions = typeof options.requestOptions === \"function\" ? options.requestOptions(payload) : options.requestOptions;\n\tconst fetchOptions = {\n\t\tmethod: payload ? \"POST\" : \"GET\",\n\t\tbody: payload ? options.stringify(payload) : void 0,\n\t\theaders,\n\t\t...options._omitFetchOptions ? {} : reqOptions\n\t};\n\tconst altFetch = typeof options.alternateFetch === \"function\" && options.alternateFetch.length >= 1 ? options.alternateFetch : void 0;\n\ttry {\n\t\tfetchIt(url, fetchOptions, callback, altFetch);\n\t} catch (e) {\n\t\tif (!reqOptions || Object.keys(reqOptions).length === 0 || !e.message || e.message.indexOf(\"not implemented\") < 0) return callback(e);\n\t\ttry {\n\t\t\tObject.keys(reqOptions).forEach((opt) => {\n\t\t\t\tdelete fetchOptions[opt];\n\t\t\t});\n\t\t\tfetchIt(url, fetchOptions, callback, altFetch);\n\t\t\toptions._omitFetchOptions = true;\n\t\t} catch (err) {\n\t\t\tcallback(err);\n\t\t}\n\t}\n};\nconst requestWithXmlHttpRequest = (options, url, payload, callback) => {\n\tif (payload && typeof payload === \"object\") payload = addQueryString(\"\", payload).slice(1);\n\tif (options.queryStringParams) url = addQueryString(url, options.queryStringParams);\n\ttry {\n\t\tconst x = XmlHttpRequestApi ? new XmlHttpRequestApi() : new ActiveXObjectApi(\"MSXML2.XMLHTTP.3.0\");\n\t\tx.open(payload ? \"POST\" : \"GET\", url, 1);\n\t\tif (!options.crossDomain) x.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\t\tx.withCredentials = !!options.withCredentials;\n\t\tif (payload) x.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\tif (x.overrideMimeType) x.overrideMimeType(\"application/json\");\n\t\tlet h = options.customHeaders;\n\t\th = typeof h === \"function\" ? h() : h;\n\t\tif (h) for (const i of Object.keys(h)) {\n\t\t\tif (UNSAFE_KEYS.indexOf(i) > -1) continue;\n\t\t\tx.setRequestHeader(i, h[i]);\n\t\t}\n\t\tx.onreadystatechange = () => {\n\t\t\tx.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n\t\t\t\tstatus: x.status,\n\t\t\t\tdata: x.responseText\n\t\t\t});\n\t\t};\n\t\tx.send(payload);\n\t} catch (e) {\n\t\tconsole && console.log(e);\n\t}\n};\nconst request = (options, url, payload, callback) => {\n\tif (typeof payload === \"function\") {\n\t\tcallback = payload;\n\t\tpayload = void 0;\n\t}\n\tcallback = callback || (() => {});\n\tif (fetchApi && url.indexOf(\"file:\") !== 0) return requestWithFetch(options, url, payload, callback);\n\tif (hasXMLHttpRequest() || typeof ActiveXObject === \"function\") return requestWithXmlHttpRequest(options, url, payload, callback);\n\tcallback(/* @__PURE__ */ new Error(\"No fetch and no xhr implementation found!\"));\n};\n//#endregion\n//#region lib/index.js\nconst getDefaults = () => {\n\treturn {\n\t\tloadPath: \"/locales/{{lng}}/{{ns}}.json\",\n\t\taddPath: \"/locales/add/{{lng}}/{{ns}}\",\n\t\tparse: (data) => JSON.parse(data),\n\t\tstringify: JSON.stringify,\n\t\tparsePayload: (namespace, key, fallbackValue) => ({ [key]: fallbackValue || \"\" }),\n\t\tparseLoadPayload: (languages, namespaces) => void 0,\n\t\trequest,\n\t\treloadInterval: typeof window !== \"undefined\" ? false : 3600 * 1e3,\n\t\tcustomHeaders: {},\n\t\tqueryStringParams: {},\n\t\tcrossDomain: false,\n\t\twithCredentials: false,\n\t\toverrideMimeType: false,\n\t\trequestOptions: {\n\t\t\tmode: \"cors\",\n\t\t\tcredentials: \"same-origin\",\n\t\t\tcache: \"default\"\n\t\t}\n\t};\n};\nvar Backend = class {\n\tconstructor(services, options = {}, allOptions = {}) {\n\t\tthis.services = services;\n\t\tthis.options = options;\n\t\tthis.allOptions = allOptions;\n\t\tthis.type = \"backend\";\n\t\tthis.init(services, options, allOptions);\n\t}\n\tinit(services, options = {}, allOptions = {}) {\n\t\tthis.services = services;\n\t\tthis.options = {\n\t\t\t...getDefaults(),\n\t\t\t...this.options || {},\n\t\t\t...options\n\t\t};\n\t\tthis.allOptions = allOptions;\n\t\tif (this.services && this.options.reloadInterval) {\n\t\t\tconst timer = setInterval(() => this.reload(), this.options.reloadInterval);\n\t\t\tif (typeof timer === \"object\" && typeof timer.unref === \"function\") timer.unref();\n\t\t}\n\t}\n\treadMulti(languages, namespaces, callback) {\n\t\tthis._readAny(languages, languages, namespaces, namespaces, callback);\n\t}\n\tread(language, namespace, callback) {\n\t\tthis._readAny([language], language, [namespace], namespace, callback);\n\t}\n\t_readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n\t\tlet loadPath = this.options.loadPath;\n\t\tif (typeof this.options.loadPath === \"function\") loadPath = this.options.loadPath(languages, namespaces);\n\t\tloadPath = makePromise(loadPath);\n\t\tloadPath.then((resolvedLoadPath) => {\n\t\t\tif (!resolvedLoadPath) return callback(null, {});\n\t\t\tconst url = interpolateUrl(resolvedLoadPath, {\n\t\t\t\tlng: languages.join(\"+\"),\n\t\t\t\tns: namespaces.join(\"+\")\n\t\t\t});\n\t\t\tif (url == null) {\n\t\t\t\tconst safeLngs = languages.map(sanitizeLogValue).join(\", \");\n\t\t\t\tconst safeNss = namespaces.map(sanitizeLogValue).join(\", \");\n\t\t\t\treturn callback(/* @__PURE__ */ new Error(\"i18next-http-backend: unsafe lng/ns value \u2014 refusing to build request URL for languages=[\" + safeLngs + \"] namespaces=[\" + safeNss + \"]\"), false);\n\t\t\t}\n\t\t\tthis.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n\t\t});\n\t}\n\tloadUrl(url, callback, languages, namespaces) {\n\t\tconst lng = typeof languages === \"string\" ? [languages] : languages;\n\t\tconst ns = typeof namespaces === \"string\" ? [namespaces] : namespaces;\n\t\tconst payload = this.options.parseLoadPayload(lng, ns);\n\t\tconst safeUrl = sanitizeLogValue(redactUrlCredentials(url));\n\t\tthis.options.request(this.options, url, payload, (err, res) => {\n\t\t\tif (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback(\"failed loading \" + safeUrl + \"; status code: \" + res.status, true);\n\t\t\tif (res && res.status >= 400 && res.status < 500) return callback(\"failed loading \" + safeUrl + \"; status code: \" + res.status, false);\n\t\t\tif (!res && err && err.message) {\n\t\t\t\tconst errorMessage = err.message.toLowerCase();\n\t\t\t\tif ([\n\t\t\t\t\t\"failed\",\n\t\t\t\t\t\"fetch\",\n\t\t\t\t\t\"network\",\n\t\t\t\t\t\"load\"\n\t\t\t\t].find((term) => errorMessage.indexOf(term) > -1)) return callback(\"failed loading \" + safeUrl + \": \" + sanitizeLogValue(err.message), true);\n\t\t\t}\n\t\t\tif (err) return callback(err, false);\n\t\t\tlet ret, parseErr;\n\t\t\ttry {\n\t\t\t\tif (typeof res.data === \"string\") ret = this.options.parse(res.data, languages, namespaces);\n\t\t\t\telse ret = res.data;\n\t\t\t} catch (e) {\n\t\t\t\tparseErr = \"failed parsing \" + safeUrl + \" to json\";\n\t\t\t}\n\t\t\tif (parseErr) return callback(parseErr, false);\n\t\t\tcallback(null, ret);\n\t\t});\n\t}\n\tcreate(languages, namespace, key, fallbackValue, callback) {\n\t\tif (!this.options.addPath) return;\n\t\tif (typeof languages === \"string\") languages = [languages];\n\t\tconst payload = this.options.parsePayload(namespace, key, fallbackValue);\n\t\tlet finished = 0;\n\t\tconst dataArray = [];\n\t\tconst resArray = [];\n\t\tlanguages.forEach((lng) => {\n\t\t\tlet addPath = this.options.addPath;\n\t\t\tif (typeof this.options.addPath === \"function\") addPath = this.options.addPath(lng, namespace);\n\t\t\tconst url = interpolateUrl(addPath, {\n\t\t\t\tlng,\n\t\t\t\tns: namespace\n\t\t\t});\n\t\t\tif (url == null) {\n\t\t\t\tfinished += 1;\n\t\t\t\tif (callback && finished === languages.length) callback(dataArray, resArray);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.options.request(this.options, url, payload, (data, res) => {\n\t\t\t\tfinished += 1;\n\t\t\t\tdataArray.push(data);\n\t\t\t\tresArray.push(res);\n\t\t\t\tif (finished === languages.length) {\n\t\t\t\t\tif (typeof callback === \"function\") callback(dataArray, resArray);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\treload() {\n\t\tconst { backendConnector, languageUtils, logger } = this.services;\n\t\tconst currentLanguage = backendConnector.language;\n\t\tif (currentLanguage && currentLanguage.toLowerCase() === \"cimode\") return;\n\t\tconst toLoad = [];\n\t\tconst append = (lng) => {\n\t\t\tlanguageUtils.toResolveHierarchy(lng).forEach((l) => {\n\t\t\t\tif (toLoad.indexOf(l) < 0) toLoad.push(l);\n\t\t\t});\n\t\t};\n\t\tappend(currentLanguage);\n\t\tif (this.allOptions.preload) this.allOptions.preload.forEach((l) => append(l));\n\t\ttoLoad.forEach((lng) => {\n\t\t\tthis.allOptions.ns.forEach((ns) => {\n\t\t\t\tbackendConnector.read(lng, ns, \"read\", null, null, (err, data) => {\n\t\t\t\t\tif (err) logger.warn(`loading namespace ${ns} for language ${lng} failed`, err);\n\t\t\t\t\tif (!err && data) logger.log(`loaded namespace ${ns} for language ${lng}`, data);\n\t\t\t\t\tbackendConnector.loaded(`${lng}|${ns}`, err, data);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n};\nBackend.type = \"backend\";\n//#endregion\nexport { Backend as default };\n", "import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };", "import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/* eslint-disable max-classes-per-file */\nvar Storage = /*#__PURE__*/function () {\n function Storage(options) {\n _classCallCheck(this, Storage);\n this.store = options.store;\n }\n return _createClass(Storage, [{\n key: \"setItem\",\n value: function setItem(key, value) {\n if (this.store) {\n try {\n this.store.setItem(key, value);\n } catch (e) {\n // f.log('failed to set value for key \"' + key + '\" to localStorage.');\n }\n }\n }\n }, {\n key: \"getItem\",\n value: function getItem(key, value) {\n if (this.store) {\n try {\n return this.store.getItem(key, value);\n } catch (e) {\n // f.log('failed to get value for key \"' + key + '\" from localStorage.');\n }\n }\n return undefined;\n }\n }]);\n}();\nfunction getDefaults() {\n var store = null;\n try {\n store = window.localStorage;\n } catch (e) {\n if (typeof window !== 'undefined') {\n console.log('Failed to load local storage.', e);\n }\n }\n return {\n prefix: 'i18next_res_',\n expirationTime: 7 * 24 * 60 * 60 * 1000,\n defaultVersion: undefined,\n getVersion: undefined,\n versions: {},\n store: store\n };\n}\nvar Cache = /*#__PURE__*/function () {\n function Cache(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Cache);\n this.init(services, options);\n this.type = 'backend';\n }\n return _createClass(Cache, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.services = services;\n this.options = _objectSpread(_objectSpread(_objectSpread({}, getDefaults()), this.options), options);\n this.storage = new Storage(this.options);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var nowMS = Date.now();\n if (!this.storage.store) {\n return callback(null, null);\n }\n var local = this.storage.getItem(\"\".concat(this.options.prefix).concat(language, \"-\").concat(namespace));\n if (local) {\n local = JSON.parse(local);\n var version = this.getVersion(language, namespace);\n if (\n // expiration field is mandatory, and should not be expired\n local.i18nStamp && local.i18nStamp + this.options.expirationTime > nowMS &&\n // there should be no language version set, or if it is, it should match the one in translation\n version === local.i18nVersion) {\n var i18nStamp = local.i18nStamp;\n delete local.i18nVersion;\n delete local.i18nStamp;\n return callback(null, local, i18nStamp);\n }\n }\n return callback(null, null);\n }\n }, {\n key: \"save\",\n value: function save(language, namespace, data) {\n if (this.storage.store) {\n data.i18nStamp = Date.now();\n\n // language version (if set)\n var version = this.getVersion(language, namespace);\n if (version) {\n data.i18nVersion = version;\n }\n\n // save\n this.storage.setItem(\"\".concat(this.options.prefix).concat(language, \"-\").concat(namespace), JSON.stringify(data));\n }\n }\n }, {\n key: \"getVersion\",\n value: function getVersion(language, namespace) {\n var _this$options$getVers, _this$options;\n return ((_this$options$getVers = (_this$options = this.options).getVersion) === null || _this$options$getVers === void 0 ? void 0 : _this$options$getVers.call(_this$options, language, namespace)) || this.options.versions[language] || this.options.defaultVersion;\n }\n }]);\n}();\nCache.type = 'backend';\n\nexport { Cache as default };\n", "import { useContext } from 'react';\nimport { nodesToString, Trans as TransWithoutContext } from './TransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport { nodesToString };\nexport function Trans({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n}) {\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n const t = tFromProps || i18n?.t.bind(i18n);\n return TransWithoutContext({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions,\n values,\n defaults,\n components,\n ns: ns || t?.ns || defaultNSFromContext || i18n?.options?.defaultNS,\n i18n,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n });\n}", "import { Fragment, isValidElement, cloneElement, createElement, Children } from 'react';\nimport { keyFromSelector } from 'i18next';\nimport HTML from 'html-parse-stringify';\nimport { isObject, isString, warn, warnOnce } from './utils.js';\nimport { getDefaults } from './defaults.js';\nimport { getI18n } from './i18nInstance.js';\nimport { unescape } from './unescape.js';\nconst hasChildren = (node, checkLength) => {\n if (!node) return false;\n const base = node.props?.children ?? node.children;\n if (checkLength) return base.length > 0;\n return !!base;\n};\nconst getChildren = node => {\n if (!node) return [];\n const children = node.props?.children ?? node.children;\n return node.props?.i18nIsDynamicList ? getAsArray(children) : children;\n};\nconst hasValidReactChildren = children => Array.isArray(children) && children.every(isValidElement);\nconst getAsArray = data => Array.isArray(data) ? data : [data];\nconst mergeProps = (source, target) => {\n const newTarget = {\n ...target\n };\n newTarget.props = {\n ...target.props,\n ...source.props\n };\n return newTarget;\n};\nconst getValuesFromChildren = children => {\n const values = {};\n if (!children) return values;\n const getData = childs => {\n const childrenArray = getAsArray(childs);\n childrenArray.forEach(child => {\n if (isString(child)) return;\n if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(values, child);\n });\n };\n getData(children);\n return values;\n};\nexport const nodesToString = (children, i18nOptions, i18n, i18nKey) => {\n if (!children) return '';\n let stringNode = '';\n const childrenArray = getAsArray(children);\n const keepArray = i18nOptions?.transSupportBasicHtmlNodes ? i18nOptions.transKeepBasicHtmlNodesFor ?? [] : [];\n childrenArray.forEach((child, childIndex) => {\n if (isString(child)) {\n stringNode += `${child}`;\n return;\n }\n if (isValidElement(child)) {\n const {\n props,\n type\n } = child;\n const childPropsCount = Object.keys(props).length;\n const shouldKeepChild = keepArray.indexOf(type) > -1;\n const childChildren = props.children;\n if (!childChildren && shouldKeepChild && !childPropsCount) {\n stringNode += `<${type}/>`;\n return;\n }\n if (!childChildren && (!shouldKeepChild || childPropsCount) || props.i18nIsDynamicList) {\n stringNode += `<${childIndex}></${childIndex}>`;\n return;\n }\n if (shouldKeepChild && childPropsCount <= 1) {\n const cnt = isString(childChildren) ? childChildren : nodesToString(childChildren, i18nOptions, i18n, i18nKey);\n stringNode += `<${type}>${cnt}</${type}>`;\n return;\n }\n const content = nodesToString(childChildren, i18nOptions, i18n, i18nKey);\n stringNode += `<${childIndex}>${content}</${childIndex}>`;\n return;\n }\n if (child === null) {\n warn(i18n, 'TRANS_NULL_VALUE', `Passed in a null value as child`, {\n i18nKey\n });\n return;\n }\n if (isObject(child)) {\n const {\n format,\n ...clone\n } = child;\n const keys = Object.keys(clone);\n if (keys.length === 1) {\n const value = format ? `${keys[0]}, ${format}` : keys[0];\n stringNode += `{{${value}}}`;\n return;\n }\n warn(i18n, 'TRANS_INVALID_OBJ', `Invalid child - Object should only have keys {{ value, format }} (format is optional).`, {\n i18nKey,\n child\n });\n return;\n }\n warn(i18n, 'TRANS_INVALID_VAR', `Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`, {\n i18nKey,\n child\n });\n });\n return stringNode;\n};\nconst escapeLiteralLessThan = (str, keepArray = [], knownComponentsMap = {}) => {\n if (!str) return str;\n const knownNames = Object.keys(knownComponentsMap);\n const allValidNames = [...keepArray, ...knownNames];\n let result = '';\n let i = 0;\n while (i < str.length) {\n if (str[i] === '<') {\n let isValidTag = false;\n const closingMatch = str.slice(i).match(/^<\\/(\\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);\n if (closingMatch) {\n const tagName = closingMatch[1];\n if (/^\\d+$/.test(tagName) || allValidNames.includes(tagName)) {\n isValidTag = true;\n result += closingMatch[0];\n i += closingMatch[0].length;\n }\n }\n if (!isValidTag) {\n const openingMatch = str.slice(i).match(/^<(\\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\\s+[\\w-]+(?:=(?:\"[^\"]*\"|'[^']*'|[^\\s>]+))?)*\\s*(\\/)?>/);\n if (openingMatch) {\n const tagName = openingMatch[1];\n if (/^\\d+$/.test(tagName) || allValidNames.includes(tagName)) {\n isValidTag = true;\n result += openingMatch[0];\n i += openingMatch[0].length;\n }\n }\n }\n if (!isValidTag) {\n result += '<';\n i += 1;\n }\n } else {\n result += str[i];\n i += 1;\n }\n }\n return result;\n};\nconst renderNodes = (children, knownComponentsMap, targetString, i18n, i18nOptions, combinedTOpts, shouldUnescape) => {\n if (targetString === '') return [];\n const keepArray = i18nOptions.transKeepBasicHtmlNodesFor || [];\n const emptyChildrenButNeedsHandling = targetString && new RegExp(keepArray.map(keep => `<${keep}`).join('|')).test(targetString);\n if (!children && !knownComponentsMap && !emptyChildrenButNeedsHandling && !shouldUnescape) return [targetString];\n const data = knownComponentsMap ?? {};\n const getData = childs => {\n const childrenArray = getAsArray(childs);\n childrenArray.forEach(child => {\n if (isString(child)) return;\n if (hasChildren(child)) getData(getChildren(child));else if (isObject(child) && !isValidElement(child)) Object.assign(data, child);\n });\n };\n getData(children);\n const escapedString = escapeLiteralLessThan(targetString, keepArray, data);\n const ast = HTML.parse(`<0>${escapedString}</0>`);\n const opts = {\n ...data,\n ...combinedTOpts\n };\n const renderInner = (child, node, rootReactNode) => {\n const childs = getChildren(child);\n const mappedChildren = mapAST(childs, node.children, rootReactNode);\n return hasValidReactChildren(childs) && mappedChildren.length === 0 || child.props?.i18nIsDynamicList ? childs : mappedChildren;\n };\n const pushTranslatedJSX = (child, inner, mem, i, isVoid) => {\n if (child.dummy) {\n child.children = inner;\n mem.push(cloneElement(child, {\n key: i\n }, isVoid ? undefined : inner));\n } else {\n mem.push(...Children.map([child], c => {\n if (c.type === Fragment || c.props?.i18nIsDynamicList !== undefined) {\n const freshProps = {\n key: i\n };\n if (c && c.props) {\n Object.keys(c.props).forEach(k => {\n if (k === 'children' || k === 'i18nIsDynamicList') return;\n freshProps[k] = c.props[k];\n });\n }\n return createElement(c.type, freshProps, isVoid ? null : inner);\n }\n const override = {\n key: i\n };\n if (c && c.props) {\n Object.keys(c.props).forEach(k => {\n if (k === 'ref' || k === 'children') return;\n override[k] = c.props[k];\n });\n }\n return cloneElement(c, override, isVoid ? null : inner);\n }));\n }\n };\n const mapAST = (reactNode, astNode, rootReactNode) => {\n const reactNodes = getAsArray(reactNode);\n const astNodes = getAsArray(astNode);\n const keepTagOccurrence = {};\n return astNodes.reduce((mem, node, i) => {\n const translationContent = node.children?.[0]?.content && i18n.services.interpolator.interpolate(node.children[0].content, opts, i18n.language);\n if (node.type === 'tag') {\n let tmp = reactNodes[parseInt(node.name, 10)];\n if (!tmp && knownComponentsMap) tmp = knownComponentsMap[node.name];\n if (rootReactNode.length === 1 && !tmp) tmp = rootReactNode[0][node.name];\n if (!tmp) tmp = {};\n const props = {\n ...node.attrs\n };\n if (shouldUnescape) {\n Object.keys(props).forEach(p => {\n const val = props[p];\n if (isString(val)) {\n props[p] = unescape(val);\n }\n });\n }\n const child = Object.keys(props).length !== 0 ? mergeProps({\n props\n }, tmp) : tmp;\n const isElement = isValidElement(child);\n const isValidTranslationWithChildren = isElement && hasChildren(node, true) && !node.voidElement;\n const isEmptyTransWithHTML = emptyChildrenButNeedsHandling && isObject(child) && child.dummy && !isElement;\n const isKnownComponent = isObject(knownComponentsMap) && Object.hasOwnProperty.call(knownComponentsMap, node.name);\n if (isString(child)) {\n const value = i18n.services.interpolator.interpolate(child, opts, i18n.language);\n mem.push(value);\n } else if (hasChildren(child) || isValidTranslationWithChildren) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (isEmptyTransWithHTML) {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i);\n } else if (Number.isNaN(parseFloat(node.name))) {\n if (isKnownComponent) {\n const inner = renderInner(child, node, rootReactNode);\n pushTranslatedJSX(child, inner, mem, i, node.voidElement);\n } else if (i18nOptions.transSupportBasicHtmlNodes && keepArray.indexOf(node.name) > -1) {\n if (node.voidElement) {\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }));\n } else {\n const occurrence = keepTagOccurrence[node.name] || 0;\n keepTagOccurrence[node.name] = occurrence + 1;\n let matched;\n let seen = 0;\n for (let r = 0; r < reactNodes.length; r += 1) {\n const rn = reactNodes[r];\n if (isValidElement(rn) && rn.type === node.name) {\n if (seen === occurrence) {\n matched = rn;\n break;\n }\n seen += 1;\n }\n }\n const innerScope = matched ? getAsArray(getChildren(matched)) : reactNodes;\n const inner = mapAST(innerScope, node.children, rootReactNode);\n mem.push(createElement(node.name, {\n key: `${node.name}-${i}`\n }, inner));\n }\n } else if (node.voidElement) {\n mem.push(`<${node.name} />`);\n } else {\n const inner = mapAST(reactNodes, node.children, rootReactNode);\n mem.push(`<${node.name}>${inner}</${node.name}>`);\n }\n } else if (isObject(child) && !isElement) {\n const content = node.children[0] ? translationContent : null;\n if (content) mem.push(content);\n } else {\n pushTranslatedJSX(child, translationContent, mem, i, node.children.length !== 1 || !translationContent);\n }\n } else if (node.type === 'text') {\n const wrapTextNodes = i18nOptions.transWrapTextNodes;\n const unescapeFn = typeof i18nOptions.unescape === 'function' ? i18nOptions.unescape : getDefaults().unescape;\n const content = shouldUnescape ? unescapeFn(i18n.services.interpolator.interpolate(node.content, opts, i18n.language)) : i18n.services.interpolator.interpolate(node.content, opts, i18n.language);\n if (wrapTextNodes) {\n mem.push(createElement(wrapTextNodes, {\n key: `${node.name}-${i}`\n }, content));\n } else {\n mem.push(content);\n }\n }\n return mem;\n }, []);\n };\n const result = mapAST([{\n dummy: true,\n children: children || []\n }], ast, getAsArray(children || []));\n return getChildren(result[0]);\n};\nconst fixComponentProps = (component, index, translation) => {\n const componentKey = component.key || index;\n const comp = cloneElement(component, {\n key: componentKey\n });\n if (!comp.props || !comp.props.children || translation.indexOf(`${index}/>`) < 0 && translation.indexOf(`${index} />`) < 0) {\n return comp;\n }\n function Componentized() {\n return createElement(Fragment, null, comp);\n }\n return createElement(Componentized, {\n key: componentKey\n });\n};\nconst generateArrayComponents = (components, translation) => components.map((c, index) => fixComponentProps(c, index, translation));\nconst generateObjectComponents = (components, translation) => {\n const componentMap = {};\n Object.keys(components).forEach(c => {\n Object.assign(componentMap, {\n [c]: fixComponentProps(components[c], c, translation)\n });\n });\n return componentMap;\n};\nconst generateComponents = (components, translation, i18n, i18nKey) => {\n if (!components) return null;\n if (Array.isArray(components)) {\n return generateArrayComponents(components, translation);\n }\n if (isObject(components)) {\n return generateObjectComponents(components, translation);\n }\n warnOnce(i18n, 'TRANS_INVALID_COMPONENTS', `<Trans /> \"components\" prop expects an object or array`, {\n i18nKey\n });\n return null;\n};\nconst isComponentsMap = object => {\n if (!isObject(object)) return false;\n if (Array.isArray(object)) return false;\n return Object.keys(object).reduce((acc, key) => acc && Number.isNaN(Number.parseFloat(key)), true);\n};\nexport function Trans({\n children,\n count,\n parent,\n i18nKey,\n context,\n tOptions = {},\n values,\n defaults,\n components,\n ns,\n i18n: i18nFromProps,\n t: tFromProps,\n shouldUnescape,\n ...additionalProps\n}) {\n const i18n = i18nFromProps || getI18n();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', `Trans: You need to pass in an i18next instance using i18nextReactModule`, {\n i18nKey\n });\n return children;\n }\n const t = tFromProps || i18n.t.bind(i18n) || (k => k);\n const reactI18nextOptions = {\n ...getDefaults(),\n ...i18n.options?.react\n };\n let namespaces = ns || t.ns || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n const {\n transDefaultProps\n } = reactI18nextOptions;\n const mergedTOptions = transDefaultProps?.tOptions ? {\n ...transDefaultProps.tOptions,\n ...tOptions\n } : tOptions;\n const mergedShouldUnescape = shouldUnescape ?? transDefaultProps?.shouldUnescape;\n const mergedValues = transDefaultProps?.values ? {\n ...transDefaultProps.values,\n ...values\n } : values;\n const mergedComponents = transDefaultProps?.components ? {\n ...transDefaultProps.components,\n ...components\n } : components;\n const nodeAsString = nodesToString(children, reactI18nextOptions, i18n, i18nKey);\n const defaultValue = defaults || mergedTOptions?.defaultValue || nodeAsString || reactI18nextOptions.transEmptyNodeValue || (typeof i18nKey === 'function' ? keyFromSelector(i18nKey) : i18nKey);\n const {\n hashTransKey\n } = reactI18nextOptions;\n const key = i18nKey || (hashTransKey ? hashTransKey(nodeAsString || defaultValue) : nodeAsString || defaultValue);\n if (i18n.options?.interpolation?.defaultVariables) {\n values = mergedValues && Object.keys(mergedValues).length > 0 ? {\n ...mergedValues,\n ...i18n.options.interpolation.defaultVariables\n } : {\n ...i18n.options.interpolation.defaultVariables\n };\n } else {\n values = mergedValues;\n }\n const valuesFromChildren = getValuesFromChildren(children);\n if (valuesFromChildren && typeof valuesFromChildren.count === 'number' && count === undefined) {\n count = valuesFromChildren.count;\n }\n const interpolationOverride = values || count !== undefined && !i18n.options?.interpolation?.alwaysFormat || !children ? mergedTOptions.interpolation : {\n interpolation: {\n ...mergedTOptions.interpolation,\n prefix: '#$?',\n suffix: '?$#'\n }\n };\n const combinedTOpts = {\n ...mergedTOptions,\n context: context || mergedTOptions.context,\n count,\n ...values,\n ...interpolationOverride,\n defaultValue,\n ns: namespaces\n };\n let translation = key ? t(key, combinedTOpts) : defaultValue;\n if (translation === key && defaultValue) translation = defaultValue;\n const generatedComponents = generateComponents(mergedComponents, translation, i18n, i18nKey);\n let indexedChildren = generatedComponents || children;\n let componentsMap = null;\n if (isComponentsMap(generatedComponents)) {\n componentsMap = generatedComponents;\n indexedChildren = children;\n }\n const content = renderNodes(indexedChildren, componentsMap, translation, i18n, reactI18nextOptions, combinedTOpts, mergedShouldUnescape);\n const useAsParent = parent ?? reactI18nextOptions.defaultTransParent;\n return useAsParent ? createElement(useAsParent, additionalProps, content) : content;\n}", "export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;", "const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '\u00A9',\n '©': '\u00A9',\n '®': '\u00AE',\n '®': '\u00AE',\n '…': '\u2026',\n '…': '\u2026',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);", "import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape,\n transDefaultProps: undefined\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;", "let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;", "import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n if (!i18n) {\n console.warn('react-i18next:: getInitialProps: You will need to pass in an i18next instance by using initReactI18next');\n return {};\n }\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};", "import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};", "import { useContext } from 'react';\nimport { IcuTransWithoutContext } from './IcuTransWithoutContext.js';\nimport { getI18n, I18nContext } from './context.js';\nexport function IcuTrans({\n i18nKey,\n defaultTranslation,\n content,\n ns,\n values = {},\n i18n: i18nFromProps,\n t: tFromProps\n}) {\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n const t = tFromProps || i18n?.t.bind(i18n);\n return IcuTransWithoutContext({\n i18nKey,\n defaultTranslation,\n content,\n ns: ns || t?.ns || defaultNSFromContext || i18n?.options?.defaultNS,\n values,\n i18n,\n t: tFromProps\n });\n}\nIcuTrans.displayName = 'IcuTrans';", "import React from 'react';\nimport { warn, warnOnce, isString } from './utils.js';\nimport { getI18n } from './i18nInstance.js';\nimport { renderTranslation } from './IcuTransUtils/index.js';\nexport function IcuTransWithoutContext({\n i18nKey,\n defaultTranslation,\n content,\n ns,\n values = {},\n i18n: i18nFromProps,\n t: tFromProps\n}) {\n const i18n = i18nFromProps || getI18n();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', `IcuTrans: You need to pass in an i18next instance using i18nextReactModule`, {\n i18nKey\n });\n return React.createElement(React.Fragment, {}, defaultTranslation);\n }\n const t = tFromProps || i18n.t?.bind(i18n) || (k => k);\n let namespaces = ns || t.ns || i18n.options?.defaultNS;\n namespaces = isString(namespaces) ? [namespaces] : namespaces || ['translation'];\n let mergedValues = values;\n if (i18n.options?.interpolation?.defaultVariables) {\n mergedValues = values && Object.keys(values).length > 0 ? {\n ...values,\n ...i18n.options.interpolation.defaultVariables\n } : {\n ...i18n.options.interpolation.defaultVariables\n };\n }\n const translation = t(i18nKey, {\n defaultValue: defaultTranslation,\n ...mergedValues,\n ns: namespaces\n });\n try {\n const rendered = renderTranslation(translation, content);\n return React.createElement(React.Fragment, {}, ...rendered);\n } catch (error) {\n warn(i18n, 'ICU_TRANS_RENDER_ERROR', `IcuTrans component error for key \"${i18nKey}\": ${error.message}`, {\n i18nKey,\n error\n });\n return React.createElement(React.Fragment, {}, translation);\n }\n}\nIcuTransWithoutContext.displayName = 'IcuTransWithoutContext';", "export class TranslationParserError extends Error {\n constructor(message, position, translationString) {\n super(message);\n this.name = 'TranslationParserError';\n this.position = position;\n this.translationString = translationString;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TranslationParserError);\n }\n }\n}", "const commonEntities = {\n ' ': '\\u00A0',\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '©': '\u00A9',\n '®': '\u00AE',\n '™': '\u2122',\n '…': '\u2026',\n '–': '\u2013',\n '—': '\u2014',\n '‘': '\\u2018',\n '’': '\\u2019',\n '‚': '\\u201A',\n '“': '\\u201C',\n '”': '\\u201D',\n '„': '\\u201E',\n '†': '\u2020',\n '‡': '\u2021',\n '•': '\u2022',\n '′': '\u2032',\n '″': '\u2033',\n '‹': '\u2039',\n '›': '\u203A',\n '§': '\u00A7',\n '¶': '\u00B6',\n '·': '\u00B7',\n ' ': '\\u2002',\n ' ': '\\u2003',\n ' ': '\\u2009',\n '€': '\u20AC',\n '£': '\u00A3',\n '¥': '\u00A5',\n '¢': '\u00A2',\n '¤': '\u00A4',\n '×': '\u00D7',\n '÷': '\u00F7',\n '−': '\u2212',\n '±': '\u00B1',\n '≠': '\u2260',\n '≤': '\u2264',\n '≥': '\u2265',\n '≈': '\u2248',\n '≡': '\u2261',\n '∞': '\u221E',\n '∫': '\u222B',\n '∑': '\u2211',\n '∏': '\u220F',\n '√': '\u221A',\n '∂': '\u2202',\n '‰': '\u2030',\n '°': '\u00B0',\n 'µ': '\u00B5',\n '←': '\u2190',\n '↑': '\u2191',\n '→': '\u2192',\n '↓': '\u2193',\n '↔': '\u2194',\n '↵': '\u21B5',\n '⇐': '\u21D0',\n '⇑': '\u21D1',\n '⇒': '\u21D2',\n '⇓': '\u21D3',\n '⇔': '\u21D4',\n 'α': '\u03B1',\n 'β': '\u03B2',\n 'γ': '\u03B3',\n 'δ': '\u03B4',\n 'ε': '\u03B5',\n 'ζ': '\u03B6',\n 'η': '\u03B7',\n 'θ': '\u03B8',\n 'ι': '\u03B9',\n 'κ': '\u03BA',\n 'λ': '\u03BB',\n 'μ': '\u03BC',\n 'ν': '\u03BD',\n 'ξ': '\u03BE',\n 'ο': '\u03BF',\n 'π': '\u03C0',\n 'ρ': '\u03C1',\n 'σ': '\u03C3',\n 'τ': '\u03C4',\n 'υ': '\u03C5',\n 'φ': '\u03C6',\n 'χ': '\u03C7',\n 'ψ': '\u03C8',\n 'ω': '\u03C9',\n 'Α': '\u0391',\n 'Β': '\u0392',\n 'Γ': '\u0393',\n 'Δ': '\u0394',\n 'Ε': '\u0395',\n 'Ζ': '\u0396',\n 'Η': '\u0397',\n 'Θ': '\u0398',\n 'Ι': '\u0399',\n 'Κ': '\u039A',\n 'Λ': '\u039B',\n 'Μ': '\u039C',\n 'Ν': '\u039D',\n 'Ξ': '\u039E',\n 'Ο': '\u039F',\n 'Π': '\u03A0',\n 'Ρ': '\u03A1',\n 'Σ': '\u03A3',\n 'Τ': '\u03A4',\n 'Υ': '\u03A5',\n 'Φ': '\u03A6',\n 'Χ': '\u03A7',\n 'Ψ': '\u03A8',\n 'Ω': '\u03A9',\n 'À': '\u00C0',\n 'Á': '\u00C1',\n 'Â': '\u00C2',\n 'Ã': '\u00C3',\n 'Ä': '\u00C4',\n 'Å': '\u00C5',\n 'Æ': '\u00C6',\n 'Ç': '\u00C7',\n 'È': '\u00C8',\n 'É': '\u00C9',\n 'Ê': '\u00CA',\n 'Ë': '\u00CB',\n 'Ì': '\u00CC',\n 'Í': '\u00CD',\n 'Î': '\u00CE',\n 'Ï': '\u00CF',\n 'Ð': '\u00D0',\n 'Ñ': '\u00D1',\n 'Ò': '\u00D2',\n 'Ó': '\u00D3',\n 'Ô': '\u00D4',\n 'Õ': '\u00D5',\n 'Ö': '\u00D6',\n 'Ø': '\u00D8',\n 'Ù': '\u00D9',\n 'Ú': '\u00DA',\n 'Û': '\u00DB',\n 'Ü': '\u00DC',\n 'Ý': '\u00DD',\n 'Þ': '\u00DE',\n 'ß': '\u00DF',\n 'à': '\u00E0',\n 'á': '\u00E1',\n 'â': '\u00E2',\n 'ã': '\u00E3',\n 'ä': '\u00E4',\n 'å': '\u00E5',\n 'æ': '\u00E6',\n 'ç': '\u00E7',\n 'è': '\u00E8',\n 'é': '\u00E9',\n 'ê': '\u00EA',\n 'ë': '\u00EB',\n 'ì': '\u00EC',\n 'í': '\u00ED',\n 'î': '\u00EE',\n 'ï': '\u00EF',\n 'ð': '\u00F0',\n 'ñ': '\u00F1',\n 'ò': '\u00F2',\n 'ó': '\u00F3',\n 'ô': '\u00F4',\n 'õ': '\u00F5',\n 'ö': '\u00F6',\n 'ø': '\u00F8',\n 'ù': '\u00F9',\n 'ú': '\u00FA',\n 'û': '\u00FB',\n 'ü': '\u00FC',\n 'ý': '\u00FD',\n 'þ': '\u00FE',\n 'ÿ': '\u00FF',\n '¡': '\u00A1',\n '¿': '\u00BF',\n 'ƒ': '\u0192',\n 'ˆ': '\u02C6',\n '˜': '\u02DC',\n 'Œ': '\u0152',\n 'œ': '\u0153',\n 'Š': '\u0160',\n 'š': '\u0161',\n 'Ÿ': '\u0178',\n 'ª': '\u00AA',\n 'º': '\u00BA',\n '¯': '\u00AF',\n '´': '\u00B4',\n '¸': '\u00B8',\n '¹': '\u00B9',\n '²': '\u00B2',\n '³': '\u00B3',\n '¼': '\u00BC',\n '½': '\u00BD',\n '¾': '\u00BE',\n '♠': '\u2660',\n '♣': '\u2663',\n '♥': '\u2665',\n '♦': '\u2666',\n '◊': '\u25CA',\n '‾': '\u203E',\n '⁄': '\u2044',\n '℘': '\u2118',\n 'ℑ': '\u2111',\n 'ℜ': '\u211C',\n 'ℵ': '\u2135'\n};\nconst entityPattern = new RegExp(Object.keys(commonEntities).map(entity => entity.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('|'), 'g');\nexport const decodeHtmlEntities = text => text.replace(entityPattern, match => commonEntities[match]).replace(/&#(\\d+);/g, (_, num) => String.fromCharCode(parseInt(num, 10))).replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));", "export const tokenize = translation => {\n const tokens = [];\n let position = 0;\n let currentText = '';\n const flushText = () => {\n if (currentText) {\n tokens.push({\n type: 'Text',\n value: currentText,\n position: position - currentText.length\n });\n currentText = '';\n }\n };\n while (position < translation.length) {\n const char = translation[position];\n if (char === '<') {\n const tagMatch = translation.slice(position).match(/^<(\\d+)>/);\n if (tagMatch) {\n flushText();\n tokens.push({\n type: 'TagOpen',\n value: tagMatch[0],\n position,\n tagNumber: parseInt(tagMatch[1], 10)\n });\n position += tagMatch[0].length;\n } else {\n const closeTagMatch = translation.slice(position).match(/^<\\/(\\d+)>/);\n if (closeTagMatch) {\n flushText();\n tokens.push({\n type: 'TagClose',\n value: closeTagMatch[0],\n position,\n tagNumber: parseInt(closeTagMatch[1], 10)\n });\n position += closeTagMatch[0].length;\n } else {\n currentText += char;\n position += 1;\n }\n }\n } else {\n currentText += char;\n position += 1;\n }\n }\n flushText();\n return tokens;\n};", "import React from 'react';\nimport { TranslationParserError } from './TranslationParserError.js';\nimport { tokenize } from './tokenizer.js';\nimport { decodeHtmlEntities } from './htmlEntityDecoder.js';\nconst renderDeclarationNode = (declaration, children, childDeclarations) => {\n const {\n type,\n props = {}\n } = declaration;\n if (props.children && Array.isArray(props.children) && childDeclarations) {\n const {\n children: _childrenToRemove,\n ...propsWithoutChildren\n } = props;\n return React.createElement(type, propsWithoutChildren, ...children);\n }\n if (children.length === 0) {\n return React.createElement(type, props);\n }\n if (children.length === 1) {\n return React.createElement(type, props, children[0]);\n }\n return React.createElement(type, props, ...children);\n};\nexport const renderTranslation = (translation, declarations = []) => {\n if (!translation) {\n return [];\n }\n const tokens = tokenize(translation);\n const result = [];\n const stack = [];\n const literalTagNumbers = new Set();\n const getCurrentDeclarations = () => {\n if (stack.length === 0) {\n return declarations;\n }\n const parentFrame = stack[stack.length - 1];\n if (parentFrame.declaration.props?.children && Array.isArray(parentFrame.declaration.props.children)) {\n return parentFrame.declaration.props.children;\n }\n return parentFrame.declarations;\n };\n tokens.forEach(token => {\n switch (token.type) {\n case 'Text':\n {\n const decoded = decodeHtmlEntities(token.value);\n const targetArray = stack.length > 0 ? stack[stack.length - 1].children : result;\n targetArray.push(decoded);\n }\n break;\n case 'TagOpen':\n {\n const {\n tagNumber\n } = token;\n const currentDeclarations = getCurrentDeclarations();\n const declaration = currentDeclarations[tagNumber];\n if (!declaration) {\n literalTagNumbers.add(tagNumber);\n const literalText = `<${tagNumber}>`;\n const targetArray = stack.length > 0 ? stack[stack.length - 1].children : result;\n targetArray.push(literalText);\n break;\n }\n stack.push({\n tagNumber,\n children: [],\n position: token.position,\n declaration,\n declarations: currentDeclarations\n });\n }\n break;\n case 'TagClose':\n {\n const {\n tagNumber\n } = token;\n if (literalTagNumbers.has(tagNumber)) {\n const literalText = `</${tagNumber}>`;\n const literalTargetArray = stack.length > 0 ? stack[stack.length - 1].children : result;\n literalTargetArray.push(literalText);\n literalTagNumbers.delete(tagNumber);\n break;\n }\n if (stack.length === 0) {\n throw new TranslationParserError(`Unexpected closing tag </${tagNumber}> at position ${token.position}`, token.position, translation);\n }\n const frame = stack.pop();\n if (frame.tagNumber !== tagNumber) {\n throw new TranslationParserError(`Mismatched tags: expected </${frame.tagNumber}> but got </${tagNumber}> at position ${token.position}`, token.position, translation);\n }\n const element = renderDeclarationNode(frame.declaration, frame.children, frame.declarations);\n const elementTargetArray = stack.length > 0 ? stack[stack.length - 1].children : result;\n elementTargetArray.push(element);\n }\n break;\n }\n });\n if (stack.length > 0) {\n const unclosed = stack[stack.length - 1];\n throw new TranslationParserError(`Unclosed tag <${unclosed.tagNumber}> at position ${unclosed.position}`, unclosed.position, translation);\n }\n return result;\n};", "import { useContext, useCallback, useMemo, useEffect, useRef, useState } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n if (typeof k === 'function') return '';\n if (Array.isArray(k)) {\n const last = k[k.length - 1];\n return typeof last === 'function' ? '' : last;\n }\n return k;\n};\nconst notReadySnapshot = {\n t: notReadyT,\n ready: false\n};\nconst dummySubscribe = () => () => {};\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n }\n const i18nOptions = useMemo(() => ({\n ...getDefaults(),\n ...i18n?.options?.react,\n ...props\n }), [i18n, props]);\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n const nsOrContext = ns || defaultNSFromContext || i18n?.options?.defaultNS;\n const unstableNamespaces = isString(nsOrContext) ? [nsOrContext] : nsOrContext || ['translation'];\n const namespaces = useMemo(() => unstableNamespaces, unstableNamespaces);\n i18n?.reportNamespaces?.addUsedNamespaces?.(namespaces);\n const revisionRef = useRef(0);\n const subscribe = useCallback(callback => {\n if (!i18n) return dummySubscribe;\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n const wrappedCallback = () => {\n revisionRef.current += 1;\n callback();\n };\n if (bindI18n) i18n.on(bindI18n, wrappedCallback);\n if (bindI18nStore) i18n.store.on(bindI18nStore, wrappedCallback);\n return () => {\n if (bindI18n) bindI18n.split(' ').forEach(e => i18n.off(e, wrappedCallback));\n if (bindI18nStore) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, wrappedCallback));\n };\n }, [i18n, i18nOptions]);\n const snapshotRef = useRef();\n const getSnapshot = useCallback(() => {\n if (!i18n) {\n return notReadySnapshot;\n }\n const calculatedReady = !!(i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const currentLng = props.lng || i18n.language;\n const currentRevision = revisionRef.current;\n const lastSnapshot = snapshotRef.current;\n if (lastSnapshot && lastSnapshot.ready === calculatedReady && lastSnapshot.lng === currentLng && lastSnapshot.keyPrefix === keyPrefix && lastSnapshot.revision === currentRevision) {\n return lastSnapshot;\n }\n const calculatedT = i18n.getFixedT(currentLng, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix, {\n scopeNs: namespaces\n });\n const newSnapshot = {\n t: calculatedT,\n ready: calculatedReady,\n lng: currentLng,\n keyPrefix,\n revision: currentRevision\n };\n snapshotRef.current = newSnapshot;\n return newSnapshot;\n }, [i18n, namespaces, keyPrefix, i18nOptions, props.lng]);\n const [loadCount, setLoadCount] = useState(0);\n const {\n t,\n ready\n } = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n useEffect(() => {\n if (i18n && !ready && !useSuspense) {\n const onLoaded = () => setLoadCount(c => c + 1);\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n }\n }, [i18n, props.lng, namespaces, ready, useSuspense, loadCount]);\n const finalI18n = i18n || {};\n const wrapperRef = useRef(null);\n const wrapperLangRef = useRef();\n const createI18nWrapper = original => {\n const descriptors = Object.getOwnPropertyDescriptors(original);\n if (descriptors.__original) delete descriptors.__original;\n const wrapper = Object.create(Object.getPrototypeOf(original), descriptors);\n if (!Object.prototype.hasOwnProperty.call(wrapper, '__original')) {\n try {\n Object.defineProperty(wrapper, '__original', {\n value: original,\n writable: false,\n enumerable: false,\n configurable: false\n });\n } catch (_) {}\n }\n return wrapper;\n };\n const ret = useMemo(() => {\n const original = finalI18n;\n const lang = original?.language;\n let i18nWrapper = original;\n if (original) {\n if (wrapperRef.current && wrapperRef.current.__original === original) {\n if (wrapperLangRef.current !== lang) {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n } else {\n i18nWrapper = wrapperRef.current;\n }\n } else {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n }\n }\n const effectiveT = !ready && !useSuspense ? (...args) => {\n warnOnce(i18n, 'USE_T_BEFORE_READY', 'useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.');\n return t(...args);\n } : t;\n const arr = [effectiveT, i18nWrapper, ready];\n arr.t = effectiveT;\n arr.i18n = i18nWrapper;\n arr.ready = ready;\n return arr;\n }, [t, finalI18n, ready, finalI18n.resolvedLanguage, finalI18n.language, finalI18n.languages]);\n if (i18n && useSuspense && !ready) {\n throw new Promise(resolve => {\n const onLoaded = () => resolve();\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n });\n }\n return ret;\n};", "import { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation.js';\nimport { getDisplayName } from './utils.js';\nexport const withTranslation = (ns, options = {}) => function Extend(WrappedComponent) {\n function I18nextWithTranslation({\n forwardedRef,\n ...rest\n }) {\n const [t, i18n, ready] = useTranslation(ns, {\n ...rest,\n keyPrefix: options.keyPrefix\n });\n const passDownProps = {\n ...rest,\n t,\n i18n,\n tReady: ready\n };\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n return createElement(WrappedComponent, passDownProps);\n }\n I18nextWithTranslation.displayName = `withI18nextTranslation(${getDisplayName(WrappedComponent)})`;\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n const forwardRef = (props, ref) => createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n};", "import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context.js';\nexport function I18nextProvider({\n i18n,\n defaultNS,\n children\n}) {\n const value = useMemo(() => ({\n i18n,\n defaultNS\n }), [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value\n }, children);\n}", "import { createElement } from 'react';\nimport { useSSR } from './useSSR.js';\nimport { composeInitialProps } from './context.js';\nimport { getDisplayName } from './utils.js';\nexport const withSSR = () => function Extend(WrappedComponent) {\n function I18nextWithSSR({\n initialI18nStore,\n initialLanguage,\n ...rest\n }) {\n useSSR(initialI18nStore, initialLanguage);\n return createElement(WrappedComponent, {\n ...rest\n });\n }\n I18nextWithSSR.getInitialProps = composeInitialProps(WrappedComponent);\n I18nextWithSSR.displayName = `withI18nextSSR(${getDisplayName(WrappedComponent)})`;\n I18nextWithSSR.WrappedComponent = WrappedComponent;\n return I18nextWithSSR;\n};", "import { useContext } from 'react';\nimport { getI18n, I18nContext } from './context.js';\nimport { warnOnce } from './utils.js';\nexport const useSSR = (initialI18nStore, initialLanguage, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useSSR: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.');\n return;\n }\n if (i18n.options?.isClone) return;\n if (initialI18nStore && !i18n.initializedStoreOnce) {\n if (!i18n.services?.resourceStore) {\n warnOnce(i18n, 'I18N_NOT_INITIALIZED', 'useSSR: i18n instance was found but not initialized (services.resourceStore is missing). Make sure you call i18next.init() before using useSSR \u2014 e.g. at module level, not only in getStaticProps/getServerSideProps.');\n return;\n }\n i18n.services.resourceStore.data = initialI18nStore;\n i18n.options.ns = Object.values(initialI18nStore).reduce((mem, lngResources) => {\n Object.keys(lngResources).forEach(ns => {\n if (mem.indexOf(ns) < 0) mem.push(ns);\n });\n return mem;\n }, i18n.options.ns);\n i18n.initializedStoreOnce = true;\n i18n.isInitialized = true;\n }\n if (initialLanguage && !i18n.initializedLanguageOnce) {\n i18n.changeLanguage(initialLanguage);\n i18n.initializedLanguageOnce = true;\n }\n};", "{\n \"auth\": {\n \"invalidUsernamePass\": \"Invalid username/password combination\",\n \"tooManyAttempts\": \"Too many login attempts. Please try again later.\",\n \"incorrectOldPassword\": \"Incorrect Old Password\",\n \"passwordTooShort\": \"Password must be at least 6 characters long\",\n \"passUpdated\": \"Password updated\",\n \"missingRequiredFields\": \"Missing Required Fields\"\n },\n \"error\": {\n \"notFound\": \"Not Found\",\n \"internalError\": \"Internal Server Error\",\n \"invalidArgs\": \"Invalid Arguments\",\n \"badMethod\": \"Bad Method\",\n \"notAuthenticated\": \"Not Authenticated\",\n \"permissionDenied\": \"Permission Denied\",\n \"error\": \"error: {{status}}\",\n \"errorWithMsg\": \"error {{status}}: {{msg}}\",\n \"requestTimedOut\": \"request timed out\",\n \"networkError\": \"network error\"\n },\n \"nav\": {\n \"privateProfileEnabled\": \"private profile enabled\",\n \"darkMode\": \"dark mode\",\n \"lightMode\": \"light mode\",\n \"addUrl\": \"add url\",\n \"addNote\": \"add note\",\n \"notes\": \"notes\",\n \"settings\": \"settings\",\n \"logout\": \"log out\",\n \"login\": \"log in\"\n },\n \"footer\": {\n \"sourceCode\": \"Source Code\"\n },\n \"login\": {\n \"pageTitle\": \"Log In\",\n \"username\": \"Username\",\n \"password\": \"Password\",\n \"submit\": \"Log In\"\n },\n \"changePassword\": {\n \"oldPassword\": \"Old Password\",\n \"newPassword\": \"New Password\",\n \"submit\": \"Save Changes\"\n },\n \"settings\": {\n \"serverDefault\": \"Server Default\",\n \"bookmarklet\": \"add url bookmarklet\",\n \"changePassword\": \"Change Password\",\n \"groupLanguage\": \"Language\",\n \"groupArchive\": \"Archiving\",\n \"groupGeneral\": \"General\",\n \"groupPrivacy\": \"Privacy & Sharing\",\n \"archiveDefault\": \"Archive new non-Private bookmarks by default\",\n \"privateDefault\": \"Default new bookmarks to Private\",\n \"suggestTags\": \"Enable tag suggestions\",\n \"suggestTagsUseReturnKey\": \"Use return key to apply tag suggestions\",\n \"privacyLock\": \"Privacy Lock (Private Account)\",\n \"publicTagCloud\": \"Public Tag Cloud (visible to visitors)\",\n \"previewNotes\": \"Show note previews in the note list\",\n \"archivingDisabled\": \"Archiving Disabled\",\n \"language\": \"Language\",\n \"tabAccount\": \"Account Settings\",\n \"tabImportExport\": \"Import / Export\",\n \"export\": \"Export\",\n \"import\": \"Import\",\n \"exportBookmarksJson\": \"Bookmarks (JSON)\",\n \"exportBookmarksHtml\": \"Bookmarks (Netscape HTML)\",\n \"exportNotesJson\": \"Notes (JSON)\",\n \"importBookmarksJson\": \"Bookmarks (Espial/Pinboard JSON)\",\n \"importFirefoxJson\": \"Bookmarks (Firefox JSON)\",\n \"importNetscapeHtml\": \"Bookmarks (Netscape HTML)\",\n \"importNotesJson\": \"Notes (JSON)\",\n \"importing\": \"importing\u2026\",\n \"imported_one\": \"{{count}} item imported\",\n \"imported_other\": \"{{count}} items imported\",\n \"importParseError\": \"could not read file\",\n \"tabApi\": \"Api\",\n \"apiKeyTitle\": \"API Key\",\n \"apiKeyHasKey\": \"An API key is currently set.\",\n \"apiKeyNoKey\": \"No API key is set.\",\n \"apiKeyCreate\": \"Create API Key\",\n \"apiKeyReset\": \"Reset API Key\",\n \"apiKeyRevoke\": \"Revoke\",\n \"apiKeyShownOnce\": \"This key is shown only once. Copy it now \u2014 you won't be able to see it again.\",\n \"apiKeyResetHint\": \"Resetting or revoking invalidates your current key.\",\n \"apiKeyCopy\": \"copy\",\n \"apiKeyCopied\": \"copied\"\n },\n \"rss\": \"RSS\",\n \"filter\": {\n \"all\": \"all\",\n \"private\": \"private\",\n \"public\": \"public\",\n \"unread\": \"unread\",\n \"untagged\": \"untagged\",\n \"starred\": \"starred\"\n },\n \"pagination\": {\n \"perPage\": \"per page:\"\n },\n \"pager\": {\n \"earlier\": \"\u00AB earlier\",\n \"later\": \"later \u00BB\"\n },\n \"notes\": {\n \"count_one\": \"{{count}} note\",\n \"count_other\": \"{{count}} notes\"\n },\n \"search\": {\n \"placeholder\": \"search\",\n \"clearTitle\": \"clear search results\",\n \"submitTitle\": \"submit search\",\n \"syntaxTitle\": \"search syntax\"\n },\n \"noTitle\": \"[no title]\",\n \"edit\": \"edit\",\n \"delete\": \"delete\",\n \"cancel\": \"cancel\",\n \"destroy\": \"destroy\",\n \"save\": \"save\",\n \"fetch\": \"fetch\",\n \"archive\": \"archive\",\n \"archiving\": \"archiving\",\n \"bmark\": {\n \"archiveLinkTitle\": \"archive link\",\n \"markAsRead\": \"mark as read\",\n \"viewInContext\": \"view in context\",\n \"url\": \"url\",\n \"title\": \"title\",\n \"description\": \"description\",\n \"tags\": \"tags\",\n \"private\": \"private\",\n \"toread\": \"to-read\"\n },\n \"note\": {\n \"killed\": \"you killed this note\",\n \"titleLabel\": \"title:\",\n \"descriptionLabel\": \"description:\",\n \"useMarkdown\": \"use markdown?\",\n \"publicLabel\": \"public?\"\n },\n \"addForm\": {\n \"previouslySaved\": \"previously saved\",\n \"url\": \"URL\",\n \"archive\": \"archive\",\n \"archiveUnavailable\": \"archiving is unavailable for private bookmarks\",\n \"readLater\": \"read later\",\n \"update\": \"update bookmark\",\n \"add\": \"add bookmark\",\n \"killed\": \"you killed this bookmark\"\n },\n \"tagCloud\": {\n \"relatedTags\": \"Related Tags\",\n \"topTags\": \"Top Tags\",\n \"topTagsTitle\": \"show a cloud of your most-used tags\",\n \"allTitle\": \"show all tags\",\n \"min2Title\": \"show tags with at least 2 bookmarks\",\n \"min5Title\": \"show tags with at least 5 bookmarks\",\n \"min10Title\": \"show tags with at least 10 bookmarks\",\n \"min20Title\": \"show tags with at least 20 bookmarks\",\n \"hide\": \"hide\",\n \"show\": \"show\"\n },\n \"bulkEdit\": {\n \"edit\": \"edit\",\n \"select\": \"select:\",\n \"oneBookmarkSelected\": \"1 bookmark selected\",\n \"bookmarksSelected\": \"{{count}} bookmarks selected\",\n \"thisPage\": \"this page\",\n \"allPages\": \"all pages\",\n \"action\": \"action:\",\n \"markAsRead\": \"mark as read\",\n \"unread\": \"unread\",\n \"addStars\": \"add stars\",\n \"removeStars\": \"remove stars\",\n \"makePrivate\": \"make private\",\n \"makePublic\": \"make public\",\n \"removeTags\": \"remove tags:\",\n \"addTags\": \"add tags:\",\n \"submitting\": \"submitting\u2026\",\n \"submit\": \"submit\",\n \"destroyOne\": \"destroy 1 bookmark?\",\n \"destroyMany\": \"destroy {{count}} bookmarks?\",\n \"publicOne\": \"make 1 bookmark public?\",\n \"publicMany\": \"make {{count}} bookmarks public?\",\n \"pleaseAddSelection\": \"please add a bookmark selection\",\n \"pleaseChooseAction\": \"please choose an action or enter tags\",\n \"tooManyTags\": \"cannot add more than 10 tags at the same time when over 20,000 bookmarks would be affected\",\n \"pageMismatch\": \"page bookmark count mismatch\",\n \"editedCount_one\": \"edited {{editedCount}} bookmark\",\n \"editedCount_other\": \"edited {{editedCount}} bookmarks\",\n \"editedCountMismatch_one\": \"selection count was {{selectionCount}}, but edited {{editedCount}} bookmark, due to matching bookmark data having changed\",\n \"editedCountMismatch_other\": \"selection count was {{selectionCount}}, but edited {{editedCount}} bookmarks, due to matching bookmark data having changed\"\n },\n \"bulkEditNotes\": {\n \"oneNoteSelected\": \"1 note selected\",\n \"notesSelected\": \"{{count}} notes selected\",\n \"destroyOne\": \"destroy 1 note?\",\n \"destroyMany\": \"destroy {{count}} notes?\",\n \"publicOne\": \"make 1 note public?\",\n \"publicMany\": \"make {{count}} notes public?\",\n \"useMarkdown\": \"use markdown\",\n \"usePlaintext\": \"use plaintext\",\n \"pleaseAddSelection\": \"please add a note selection\",\n \"pleaseChooseAction\": \"please choose an action\",\n \"pageMismatch\": \"page note count mismatch\",\n \"editedCount_one\": \"edited {{editedCount}} note\",\n \"editedCount_other\": \"edited {{editedCount}} notes\",\n \"editedCountMismatch_one\": \"selection count was {{selectionCount}}, but edited {{editedCount}} note, due to matching note data having changed\",\n \"editedCountMismatch_other\": \"selection count was {{selectionCount}}, but edited {{editedCount}} notes, due to matching note data having changed\"\n },\n \"docs\": {\n \"title\": \"Understanding the Search Syntax\",\n \"pageFilters\": \"Page filters\",\n \"pageFiltersDesc\": \"Searches are scoped to the currently selected page filter.\",\n \"soGiven\": \"So, given the possible page filters\",\n \"if\": \"If\",\n \"isCurrentlySelectedIncludes\": \"is currently selected, the search includes\",\n \"bookmarks\": \"bookmarks\",\n \"isCurrentlySelectedOnly\": \"is currently selected, the search only includes\",\n \"bookmarksEtc\": \"bookmarks, etc..\",\n \"combineAnd\": \"Combine Searches (AND)\",\n \"separateBySpace\": \"Separate terms by a space.\",\n \"forExample\": \"For example,\",\n \"combineOr\": \"Combine Searches (OR)\",\n \"put\": \"Put\",\n \"betweenQuery\": \"between each search query.\",\n \"excludeWords\": \"Exclude words from your search\",\n \"inFrontWord\": \"in front of a word you want to leave out.\",\n \"exactMatch\": \"Search for an exact match\",\n \"putInQuotes\": \"Put a word or phrase inside quotes.\",\n \"specificField\": \"Search on a specific field\",\n \"inFrontTerm\": \"in front of the term,\",\n \"where\": \"where\",\n \"isOneOfOptions\": \"is one of the options below\",\n \"bookmarkSearch\": \"Bookmark Search\",\n \"noteSearch\": \"Note Search\",\n \"fieldHeader\": \"FIELD\",\n \"exampleHeader\": \"EXAMPLE\",\n \"complexExamples\": \"More Complex Examples\",\n \"complexExample1Desc\": \"\\\"youtube\\\" in url, and title of \\\"haskell\\\" or title of \\\"python\\\" and after 12/31/2017\",\n \"complexExample2Desc\": \"\\\"hacker news\\\" not in title, and \\\"news\\\", \\\"cnn\\\", \\\"npr\\\" anywhere, or \\\"the guardian\\\" in the description\"\n }\n}\n", "import type { Bookmark, Filter, Note, SharedP } from './types';\r\n\r\n/** Server-rendered page data. */\r\nexport type AppData = {\r\n /** The list of bookmarks for the current page. */\r\n bmarks: Bookmark[];\r\n /** A single bookmark, used when viewing or editing one entry. */\r\n bmark: Bookmark;\r\n /** The list of notes for the current page. */\r\n notes?: Note[];\r\n /** Whether the current user owns the displayed profile. */\r\n isowner: boolean;\r\n /** Whether tag suggestions are enabled. */\r\n suggestTags?: boolean;\r\n /** Whether the Return key applies a tag suggestion (Tab always does). */\r\n suggestTagsUseReturnKey?: boolean;\r\n /** Whether note listings show a text preview, or just the title. */\r\n previewNotes?: boolean;\r\n /** Whether the archive backend is enabled. */\r\n archiveBackendEnabled?: boolean;\r\n /** The current filter applied to the bookmarks. */\r\n filter?: Filter;\r\n /** The current shared/private filter. */\r\n sharedp?: SharedP;\r\n /** The path tags currently filtering bookmarks. */\r\n tags?: string[];\r\n /** The current search query string, or null if none. */\r\n query?: string | null;\r\n};\r\n\r\n/** Server-rendered global data. */\r\nexport type App = {\r\n /** The HTTP header name used to send the CSRF token. */\r\n csrfHeaderName: string;\r\n /** The cookie name that holds the CSRF token. */\r\n csrfCookieName: string;\r\n /** The form parameter name used to submit the CSRF token. */\r\n csrfParamName: string;\r\n /** The current CSRF token value. */\r\n csrfToken: string;\r\n /** URL for the home route. */\r\n homeR: string;\r\n /** URL for the logout route. */\r\n authRlogoutR: string;\r\n /** URL for the current user's profile, or null if not logged in. */\r\n userR: string | null;\r\n /** Endpoint URL for fetching tag cloud data. */\r\n tagCloudR?: string;\r\n /** URL for the current note, or null if not viewing a note. */\r\n noteR: string | null;\r\n /** URL for the i18n backend */\r\n i18nR: string;\r\n /** The current language code (e.g. 'en', 'fr'). */\r\n lang: string;\r\n /** Server-rendered page data. */\r\n dat: AppData;\r\n};\r\n\r\ndeclare global {\r\n // Provided by the server in a <script> tag.\r\n\r\n var app: App;\r\n}\r\n\r\nexport function app(): App {\r\n return globalThis.app;\r\n}\r\n\r\nexport function fromNow(locale = navigator.language, date: Date | number | string): string {\r\n const target = date instanceof Date ? date.getTime() : new Date(date).getTime();\r\n\r\n const diff = target - Date.now();\r\n const abs = Math.abs(diff);\r\n\r\n const units: readonly [Intl.RelativeTimeFormatUnit, number][] = [\r\n ['year', 365 * 24 * 60 * 60 * 1000],\r\n ['month', 30 * 24 * 60 * 60 * 1000],\r\n ['day', 24 * 60 * 60 * 1000],\r\n ['hour', 60 * 60 * 1000],\r\n ['minute', 60 * 1000],\r\n ['second', 1000],\r\n ];\r\n\r\n const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });\r\n\r\n for (const [unit, ms] of units) {\r\n if (abs >= ms || unit === 'second') {\r\n return rtf.format(Math.round(diff / ms), unit);\r\n }\r\n }\r\n\r\n // Unreachable, but satisfies TypeScript.\r\n return '';\r\n}\r\n\r\nexport function shdatetime(lang: string, dateString: string): string {\r\n return new Date(dateString).toLocaleString(lang, {\r\n dateStyle: 'full',\r\n timeStyle: 'long',\r\n });\r\n}\r\n\r\nexport function toLocaleDateString(lang: string, dateString: string): string {\r\n return new Date(dateString).toLocaleDateString(lang, {\r\n year: 'numeric',\r\n month: 'short',\r\n day: 'numeric',\r\n });\r\n}\r\n\r\nexport function closeWindow(win: Window): void {\r\n win.close();\r\n}\r\n\r\nexport type RawHTML = string;\r\n\r\nexport function setFocus(elemId: string): void {\r\n document.getElementById(elemId)?.focus();\r\n}\r\n", "import type { TFunction } from 'i18next';\r\n\r\nexport type QueryStringArray = Array<[string, string | null]>;\r\n\r\nfunction unsafeDecode(str: string): string {\r\n return decodeURIComponent(str);\r\n}\r\n\r\nexport function parseQueryString(searchOrHash: string): QueryStringArray {\r\n const first = searchOrHash.slice(0, 1);\r\n const qs = first === '#' || first === '?' ? searchOrHash.slice(1) : searchOrHash;\r\n const parts = qs.split('&').filter((x) => x !== '');\r\n\r\n const decode = (s: string) => unsafeDecode(s.replace(/\\+/g, ' '));\r\n\r\n const out: QueryStringArray = [];\r\n for (const kv of parts) {\r\n const [k, ...rest] = kv.split('=');\r\n if (!k) continue;\r\n if (rest.length === 0) out.push([decode(k), null]);\r\n else if (rest.length === 1) out.push([decode(k), decode(rest[0] ?? '')]);\r\n }\r\n return out;\r\n}\r\n\r\nexport function curQuerystring(): QueryStringArray {\r\n return parseQueryString(window.location.search);\r\n}\r\n\r\nexport function lookupQueryStringValue(qs: QueryStringArray, k: string): string | null {\r\n for (const [key, val] of qs) {\r\n if (key === k) return val;\r\n }\r\n return null;\r\n}\r\n\r\nexport function encodeTag(tag: string): string {\r\n return encodeURIComponent(tag.replace(/\\+/g, '%2B'));\r\n}\r\n\r\nexport function fromNullableStr(s: string | null | undefined): string {\r\n return s ?? '';\r\n}\r\n\r\nexport function normalizeTags(tags: string | null): string {\r\n return tags?.replace(/,/g, ' ').replace(/\\s+/g, ' ').trim() ?? '';\r\n}\r\n\r\nexport function apiErrorMsg(t: TFunction, status: number, bodyText: string): string {\r\n const body = bodyText.trim();\r\n if (!body.includes('\\n') && !body.includes('doctype html') && body.length > 0) {\r\n return t('error.errorWithMsg', { status, msg: body });\r\n }\r\n return t('error.error', { status });\r\n}\r\n\r\n/**\r\n * Generates a short, non-cryptographic hash from a string.\r\n * @param str - The input string to hash.\r\n * @returns A short alphanumeric string hash.\r\n */\r\nexport function getShortHash(str: string): string {\r\n let hash = 5381;\r\n let i = str.length;\r\n\r\n while (i) {\r\n hash = (hash * 33) ^ str.charCodeAt(--i);\r\n }\r\n\r\n // Convert to an unsigned 32-bit integer, then to a base36 string\r\n return (hash >>> 0).toString(36);\r\n}\r\n", "import i18next from 'i18next';\r\nimport ChainedBackend from 'i18next-chained-backend';\r\nimport HttpBackend from 'i18next-http-backend';\r\nimport LocalStorageBackend from 'i18next-localstorage-backend';\r\nimport { initReactI18next } from 'react-i18next';\r\n\r\nimport translationEn from '../../static/locales/en/translation.json';\r\nimport { app } from './globals';\r\nimport { getShortHash } from './util';\r\n\r\nexport const defaultNS = 'translation';\r\nexport const fallbackNS = 'translation';\r\n\r\nconst a = app();\r\n\r\nvoid i18next\r\n .use(ChainedBackend)\r\n .use(initReactI18next)\r\n .init({\r\n lng: a.lang,\r\n fallbackLng: 'en',\r\n defaultNS: defaultNS,\r\n ns: [defaultNS],\r\n partialBundledLanguages: true,\r\n resources: {\r\n en: {\r\n translation: translationEn,\r\n },\r\n },\r\n backend: {\r\n backends: [LocalStorageBackend, HttpBackend],\r\n backendOptions: [\r\n {\r\n prefix: `i18next_res_${getShortHash(a.i18nR)}_`,\r\n expirationTime: 7 * 24 * 60 * 60 * 1000, // 7 days\r\n },\r\n {\r\n loadPath: `${a.i18nR}/{{lng}}/{{ns}}.json`,\r\n },\r\n ],\r\n },\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n load: 'currentOnly',\r\n });\r\n\r\nexport default i18next;\r\n", "import './i18n';\r\n\r\nimport { type ReactNode, useLayoutEffect } from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\n\r\nimport { logout } from './api';\r\nimport { AccountSettingsView } from './components/AccountSettings';\r\nimport { AddForm } from './components/AddForm';\r\nimport { BList } from './components/BList';\r\nimport { BulkEdit } from './components/BulkEdit';\r\nimport { NList } from './components/NList';\r\nimport { NNote } from './components/NNote';\r\nimport { NoteBulkEdit } from './components/NoteBulkEdit';\r\nimport { TagCloud } from './components/TagCloud';\r\nimport type { AccountSettings, Bookmark, ColorSchemePreference, Note, TagCloudMode } from './types';\r\nimport { tagCloudModeToF } from './types';\r\n\r\nfunction selectEl(selector: string): Element | null {\r\n return document.querySelector(selector);\r\n}\r\n\r\nfunction viewRendered(): void {\r\n const el = document.querySelector('#content');\r\n if (el) el.setAttribute('view-rendered', '');\r\n}\r\n\r\nfunction RenderReady({ children }: { children: ReactNode }) {\r\n useLayoutEffect(() => {\r\n viewRendered();\r\n }, []);\r\n\r\n return children;\r\n}\r\n\r\nfunction renderView(renderElSelector: string, node: ReactNode): void {\r\n const el = selectEl(renderElSelector);\r\n if (!el) return;\r\n createRoot(el).render(<RenderReady>{node}</RenderReady>);\r\n}\r\n\r\nexport const logoutE = (e: Event) => () => {\r\n e.preventDefault();\r\n void logout();\r\n};\r\n\r\nexport const renderBookmarks = (renderElSelector: string) => (bmarks: Bookmark[]) => () => {\r\n renderView(renderElSelector, <BList initial={bmarks} />);\r\n};\r\n\r\nexport const renderBulkEdit = (renderElSelector: string) => (bcount: number) => () => {\r\n renderView(renderElSelector, <BulkEdit bcount={bcount} />);\r\n};\r\n\r\nexport const renderTagCloud = (renderElSelector: string) => (tagCloudMode: TagCloudMode) => () => {\r\n const el = selectEl(renderElSelector);\r\n if (!el) return;\r\n createRoot(el).render(<TagCloud initialMode={tagCloudModeToF(tagCloudMode)} />);\r\n};\r\n\r\nexport const renderAddForm = (renderElSelector: string) => (bmark: Bookmark) => () => {\r\n renderView(renderElSelector, <AddForm initial={bmark} />);\r\n};\r\n\r\nexport const renderNotes = (renderElSelector: string) => (notes: Note[]) => () => {\r\n renderView(renderElSelector, <NList initial={notes} />);\r\n};\r\n\r\nexport const renderNoteBulkEdit = (renderElSelector: string) => (ncount: number) => () => {\r\n renderView(renderElSelector, <NoteBulkEdit ncount={ncount} />);\r\n};\r\n\r\nexport const renderNote = (renderElSelector: string) => (note: Note) => () => {\r\n renderView(renderElSelector, <NNote initial={note} />);\r\n};\r\n\r\nexport const renderAccountSettings =\r\n (renderElSelector: string) => (accountSettings: AccountSettings) => () => {\r\n renderView(renderElSelector, <AccountSettingsView initial={accountSettings} />);\r\n };\r\n\r\nexport function initColorSchemeToggle(): void {\r\n function isColorSchemePreference(value: string | null): value is ColorSchemePreference {\r\n return value === 'light' || value === 'dark';\r\n }\r\n function getEffectiveColorScheme(): ColorSchemePreference {\r\n const explicit = document.documentElement.dataset.colorScheme;\r\n if (explicit === 'light' || explicit === 'dark') return explicit;\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n }\r\n\r\n function applyColorSchemePreference(preference: ColorSchemePreference): void {\r\n document.documentElement.dataset.colorScheme = preference;\r\n }\r\n\r\n const colorSchemeStorageKey = 'espial-color-scheme';\r\n const stored = window.localStorage.getItem(colorSchemeStorageKey);\r\n if (isColorSchemePreference(stored)) {\r\n applyColorSchemePreference(stored);\r\n }\r\n\r\n const toggleEl = document.querySelector<HTMLAnchorElement>('#color-scheme-toggle');\r\n if (!toggleEl) return;\r\n\r\n toggleEl.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n const next: ColorSchemePreference = getEffectiveColorScheme() === 'dark' ? 'light' : 'dark';\r\n applyColorSchemePreference(next);\r\n window.localStorage.setItem(colorSchemeStorageKey, next);\r\n });\r\n}\r\n", "/**\nBase class for all Ky-specific errors. `HTTPError`, `NetworkError`, `TimeoutError`, and `ForceRetryError` extend this class.\n\nYou can use `instanceof KyError` to check if an error originated from Ky, or use the `isKyError()` type guard for cross-realm compatibility and TypeScript type narrowing.\n\nNote: `SchemaValidationError` is intentionally not considered a Ky error. `KyError` covers failures in Ky's HTTP lifecycle (bad status, timeout, retry), while schema validation errors originate from the user-provided schema, not from Ky itself.\n*/\nexport class KyError extends Error {\n\toverride name = 'KyError';\n\n\tget isKyError(): true {\n\t\treturn true;\n\t}\n}\n", "import type {NormalizedOptions} from '../types/options.js';\nimport type {KyRequest} from '../types/request.js';\nimport type {KyResponse} from '../types/response.js';\nimport {KyError} from './KyError.js';\n\n/**\nError thrown when the response has a non-2xx status code and `throwHttpErrors` is enabled.\n\nThe error has a `response` property with the `Response` object, a `request` property with the `Request` object, an `options` property with the normalized options (either passed to `ky` when creating an instance with `ky.create()` or directly when performing the request), and a `data` property with the pre-parsed response body. For JSON responses (based on `Content-Type`), the body is parsed using the `parseJson` option if set, or `JSON.parse` by default. For other content types, it is set as plain text. If the body is empty or parsing fails, `data` will be `undefined`. To avoid hanging or excessive buffering, `error.data` population is bounded by the request timeout and a 10 MiB response body size limit. The `data` property is populated before `beforeError` hooks run, so hooks can access it.\n\nThe response body is automatically consumed when populating `error.data`, so `error.response.json()` and other body methods will not work. Use `error.data` instead. The `error.response` object is still available for headers, status, etc.\n\nBe aware that some types of errors, such as network errors, inherently mean that a response was not received. In that case, the error will be an instance of `NetworkError` instead of `HTTPError` and will not contain a `response` property.\n*/\nexport class HTTPError<T = unknown> extends KyError {\n\toverride name = 'HTTPError' as const;\n\tresponse: KyResponse<T>;\n\trequest: KyRequest;\n\toptions: NormalizedOptions;\n\tdata: T | string | undefined;\n\n\tconstructor(response: Response, request: Request, options: NormalizedOptions) {\n\t\tconst code = (response.status || response.status === 0) ? response.status : '';\n\t\tconst title = response.statusText ?? '';\n\t\tconst status = `${code} ${title}`.trim();\n\t\tconst reason = status ? `status code ${status}` : 'an unknown error';\n\n\t\tsuper(`Request failed with ${reason}: ${request.method} ${request.url}`);\n\n\t\tthis.response = response;\n\t\tthis.request = request;\n\t\tthis.options = options;\n\t}\n}\n", "import type {KyRequest} from '../types/request.js';\nimport {KyError} from './KyError.js';\n\n/**\nError thrown when a network error occurs during the request (e.g., DNS failure, connection refused, offline). It has a `request` property with the `Request` object. The original error is available via the standard `cause` property.\n\nNetwork errors are automatically retried (for retriable methods).\n\nNote: Network errors are detected using runtime-specific heuristics. Unrecognized runtimes may produce errors that are not wrapped in `NetworkError`. Use the `shouldRetry` option to handle such cases.\n*/\nexport class NetworkError extends KyError {\n\toverride name = 'NetworkError' as const;\n\trequest: KyRequest;\n\n\tconstructor(request: Request, options?: {cause?: Error}) {\n\t\tsuper(`Request failed due to a network error: ${request.method} ${request.url}`, options);\n\t\tthis.request = request;\n\t}\n}\n", "/**\nWrapper for non-Error values that were thrown.\n\nIn JavaScript, any value can be thrown (not just Error instances). This class wraps such values to ensure consistent error handling.\n*/\nexport class NonError extends Error {\n\toverride name = 'NonError';\n\treadonly value: unknown;\n\n\tconstructor(value: unknown) {\n\t\tlet message = 'Non-error value was thrown';\n\n\t\t// Intentionally minimal as this error is just an edge-case.\n\t\ttry {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tmessage = value;\n\t\t\t} else if (value && typeof value === 'object' && 'message' in value && typeof value.message === 'string') {\n\t\t\t\tmessage = value.message;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Use default message if accessing properties throws\n\t\t}\n\n\t\tsuper(message);\n\n\t\tthis.value = value;\n\t}\n}\n", "import type {ForceRetryOptions} from '../core/constants.js';\nimport {KyError} from './KyError.js';\nimport {NonError} from './NonError.js';\n\n/**\nError used to signal a forced retry from `afterResponse` hooks.\n\nThis is thrown when `ky.retry()` is returned from an `afterResponse` hook. It is observable in `beforeRetry` and `beforeError` hooks via the `isForceRetryError()` type guard.\n*/\nexport class ForceRetryError extends KyError {\n\toverride name = 'ForceRetryError' as const;\n\tcustomDelay: number | undefined;\n\tcode: string | undefined;\n\tcustomRequest: Request | undefined;\n\n\tconstructor(options?: ForceRetryOptions) {\n\t\t// Runtime protection: wrap non-Error causes in NonError\n\t\t// TypeScript type is Error for guidance, but JS users can pass anything\n\t\tconst cause = options?.cause\n\t\t\t? (options.cause instanceof Error ? options.cause : new NonError(options.cause))\n\t\t\t: undefined;\n\n\t\tsuper(\n\t\t\toptions?.code ? `Forced retry: ${options.code}` : 'Forced retry',\n\t\t\tcause ? {cause} : undefined,\n\t\t);\n\n\t\tthis.customDelay = options?.delay;\n\t\tthis.code = options?.code;\n\t\tthis.customRequest = options?.request;\n\t}\n}\n", "import type {StandardSchemaV1Issue} from '../types/standard-schema.js';\n\n/**\nThe error thrown when [Standard Schema](https://github.com/standard-schema/standard-schema) validation fails in `.json(schema)`. It has an `issues` property with the validation issues from the schema.\n\nThis error intentionally does not extend `KyError` because it does not represent a failure in Ky's HTTP lifecycle. The request succeeded; the user's schema rejected the data. As such, it is not matched by `isKyError()`.\n\n@example\n```\nimport ky, {SchemaValidationError} from 'ky';\nimport {z} from 'zod';\n\nconst userSchema = z.object({name: z.string()});\n\ntry {\n\tconst user = await ky('/api/user').json(userSchema);\n\tconsole.log(user.name);\n} catch (error) {\n\tif (error instanceof SchemaValidationError) {\n\t\tconsole.error(error.issues);\n\t}\n}\n```\n*/\nexport class SchemaValidationError extends Error {\n\toverride name = 'SchemaValidationError' as const;\n\treadonly issues: readonly StandardSchemaV1Issue[];\n\n\tconstructor(issues: readonly StandardSchemaV1Issue[]) {\n\t\tsuper('Response schema validation failed');\n\t\tthis.issues = issues;\n\t}\n}\n", "import type {KyRequest} from '../types/request.js';\nimport {KyError} from './KyError.js';\n\n/**\nError thrown when the request times out. It has a `request` property with the `Request` object.\n*/\nexport class TimeoutError extends KyError {\n\toverride name = 'TimeoutError' as const;\n\trequest: KyRequest;\n\n\tconstructor(request: Request) {\n\t\tsuper(`Request timed out: ${request.method} ${request.url}`);\n\t\tthis.request = request;\n\t}\n}\n", "import type {Expect, Equal} from '@type-challenges/utils';\nimport {type KyOptionsRegistry, type RequestHttpMethod} from '../types/options.js';\n\nexport const supportsRequestStreams = (() => {\n\tlet duplexAccessed = false;\n\tlet hasContentType = false;\n\tconst supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n\tconst supportsRequest = typeof globalThis.Request === 'function';\n\n\tif (supportsReadableStream && supportsRequest) {\n\t\ttry {\n\t\t\thasContentType = new globalThis.Request('https://empty.invalid', {\n\t\t\t\tbody: new globalThis.ReadableStream(),\n\t\t\t\tmethod: 'POST',\n\t\t\t\t// @ts-expect-error - Types are outdated.\n\t\t\t\tget duplex() {\n\t\t\t\t\tduplexAccessed = true;\n\t\t\t\t\treturn 'half';\n\t\t\t\t},\n\t\t\t}).headers.has('Content-Type');\n\t\t} catch (error) {\n\t\t\t// QQBrowser on iOS throws \"unsupported BodyInit type\" error (see issue #581)\n\t\t\tif (error instanceof Error && error.message === 'unsupported BodyInit type') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\treturn duplexAccessed && !hasContentType;\n})();\n\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsAbortSignal = typeof globalThis.AbortSignal === 'function' && typeof globalThis.AbortSignal.any === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\n\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'] as const;\n\nconst validate = <T extends Array<true>>() => undefined as unknown as T;\nvalidate<[\n\tExpect<Equal<typeof requestMethods[number], RequestHttpMethod>>,\n]>();\n\nexport const responseTypes = {\n\tjson: 'application/json',\n\ttext: 'text/*',\n\tformData: 'multipart/form-data',\n\tarrayBuffer: '*/*',\n\tblob: '*/*',\n\t// Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).\n\t// We still feature-check at runtime before exposing the shortcut.\n\tbytes: '*/*',\n} as const;\n\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2_147_483_647;\n\n// Size in bytes of a typical form boundary (e.g., '------WebKitFormBoundaryaxpyiPgbbPti10Rw'), used to help estimate upload size\nexport const usualFormBoundarySize = 40;\n\n/**\nSymbol that can be returned by a `beforeRetry` hook to stop retrying without throwing an error.\n*/\nexport const stop = Symbol('stop');\n\n/**\nOptions for forcing a retry via `ky.retry()`.\n*/\nexport type ForceRetryOptions = {\n\t/**\n\tCustom delay in milliseconds before retrying.\n\n\tIf not provided, uses the default retry delay calculation based on `retry.delay` configuration.\n\n\t**Note:** Custom delays bypass jitter and `backoffLimit`. This is intentional, as custom delays often come from server responses (e.g., `Retry-After` headers) and should be respected exactly as specified.\n\t*/\n\tdelay?: number;\n\n\t/**\n\tError code for the retry.\n\n\tThis machine-readable identifier will be included in the error message passed to `beforeRetry` hooks, allowing you to distinguish between different types of forced retries.\n\n\t@example\n\t```\n\treturn ky.retry({code: 'RATE_LIMIT'});\n\t// Resulting error message: 'Forced retry: RATE_LIMIT'\n\t```\n\t*/\n\tcode?: string;\n\n\t/**\n\tOriginal error that caused the retry.\n\n\tThis allows you to preserve the error chain when forcing a retry based on caught exceptions. The error will be set as the `cause` of the `ForceRetryError`, enabling proper error chain traversal.\n\n\t@example\n\t```\n\ttry {\n\t\tconst data = await response.json();\n\t\tvalidateBusinessLogic(data);\n\t} catch (error) {\n\t\treturn ky.retry({\n\t\t\tcode: 'VALIDATION_FAILED',\n\t\t\tcause: error // Preserves original error in chain\n\t\t});\n\t}\n\t```\n\t*/\n\tcause?: Error;\n\n\t/**\n\tCustom request to use for the retry.\n\n\tThis allows you to modify or completely replace the request during a forced retry. The custom request becomes the starting point for the retry - `beforeRetry` hooks can still further modify it if needed.\n\n\t**Note:** The custom request's `signal` will be replaced with Ky's managed signal to handle timeouts and user-provided abort signals correctly. If the original request body has been consumed, you must provide a new body or clone the request before consuming.\n\n\t**Warning:** Custom retry requests are not sanitized. If you reuse headers across origins, remove any credentials you do not want forwarded.\n\n\t@example\n\t```\n\t// Fallback to a different endpoint\n\treturn ky.retry({\n\t\trequest: new Request('https://backup-api.com/endpoint', {\n\t\t\tmethod: request.method,\n\t\t\theaders: request.headers,\n\t\t}),\n\t\tcode: 'BACKUP_ENDPOINT'\n\t});\n\n\t// Retry with refreshed authentication token\n\tconst data = await response.json();\n\treturn ky.retry({\n\t\trequest: new Request(request, {\n\t\t\theaders: {\n\t\t\t\t...Object.fromEntries(request.headers),\n\t\t\t\t'Authorization': `Bearer ${data.newToken}`\n\t\t\t}\n\t\t}),\n\t\tcode: 'TOKEN_REFRESHED'\n\t});\n\t```\n\t*/\n\trequest?: Request;\n};\n\n/**\nMarker returned by `ky.retry()` to signal a forced retry from `afterResponse` hooks.\n*/\nexport class RetryMarker {\n\toptions: ForceRetryOptions | undefined;\n\n\tconstructor(options?: ForceRetryOptions) {\n\t\tthis.options = options;\n\t}\n}\n\n/**\nForce a retry from an `afterResponse` hook.\n\nThis allows you to retry a request based on the response content, even if the response has a successful status code. The retry will respect the `retry.limit` option and skip the `shouldRetry` check. The forced retry is observable in `beforeRetry` hooks, where the error will be a `ForceRetryError`.\n\n@param options - Optional configuration for the retry.\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n\thooks: {\n\t\tafterResponse: [\n\t\t\tasync ({request, response}) => {\n\t\t\t\t// Retry based on response body content\n\t\t\t\tif (response.status === 200) {\n\t\t\t\t\tconst data = await response.json();\n\n\t\t\t\t\t// Simple retry with default delay\n\t\t\t\t\tif (data.error?.code === 'TEMPORARY_ERROR') {\n\t\t\t\t\t\treturn ky.retry();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Retry with custom delay from API response\n\t\t\t\t\tif (data.error?.code === 'RATE_LIMIT') {\n\t\t\t\t\t\treturn ky.retry({\n\t\t\t\t\t\t\tdelay: data.error.retryAfter * 1000,\n\t\t\t\t\t\t\tcode: 'RATE_LIMIT'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Retry with a modified request (e.g., fallback endpoint)\n\t\t\t\t\tif (data.error?.code === 'FALLBACK_TO_BACKUP') {\n\t\t\t\t\t\treturn ky.retry({\n\t\t\t\t\t\t\trequest: new Request('https://backup-api.com/endpoint', {\n\t\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\t\theaders: request.headers,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tcode: 'BACKUP_ENDPOINT'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Retry with refreshed authentication\n\t\t\t\t\tif (data.error?.code === 'TOKEN_REFRESH' && data.newToken) {\n\t\t\t\t\t\treturn ky.retry({\n\t\t\t\t\t\t\trequest: new Request(request, {\n\t\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\t...Object.fromEntries(request.headers),\n\t\t\t\t\t\t\t\t\t'Authorization': `Bearer ${data.newToken}`\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tcode: 'TOKEN_REFRESHED'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Retry with cause to preserve error chain\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvalidateResponse(data);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\treturn ky.retry({\n\t\t\t\t\t\t\tcode: 'VALIDATION_FAILED',\n\t\t\t\t\t\t\tcause: error\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\tbeforeRetry: [\n\t\t\t({error, retryCount}) => {\n\t\t\t\t// Observable in beforeRetry hooks\n\t\t\t\tif (isForceRetryError(error)) {\n\t\t\t\t\tconsole.log(`Forced retry #${retryCount}: ${error.message}`);\n\t\t\t\t\t// Example output: \"Forced retry #1: Forced retry: RATE_LIMIT\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n});\n\nconst response = await api.get('https://example.com/api');\n```\n*/\nexport const retry = (options?: ForceRetryOptions) => new RetryMarker(options);\n\nexport const kyOptionKeys: KyOptionsRegistry = {\n\tjson: true,\n\tparseJson: true,\n\tstringifyJson: true,\n\tsearchParams: true,\n\tbaseUrl: true,\n\tprefix: true,\n\tretry: true,\n\ttimeout: true,\n\ttotalTimeout: true,\n\thooks: true,\n\tthrowHttpErrors: true,\n\tonDownloadProgress: true,\n\tonUploadProgress: true,\n\tfetch: true,\n\tcontext: true,\n};\n\n// Standard RequestInit options that should NOT be passed separately to fetch()\n// because they're already applied to the Request object.\n// Note: `dispatcher` and `priority` are NOT included here - they're fetch-only\n// options that the Request constructor doesn't accept, so they need to be passed\n// separately to fetch().\nexport const requestOptionsRegistry = {\n\tmethod: true,\n\theaders: true,\n\tbody: true,\n\tmode: true,\n\tcredentials: true,\n\tcache: true,\n\tredirect: true,\n\treferrer: true,\n\treferrerPolicy: true,\n\tintegrity: true,\n\tkeepalive: true,\n\tsignal: true,\n\twindow: true,\n\tduplex: true,\n} as const;\n", "import type {Options} from '../types/options.js';\nimport {usualFormBoundarySize} from '../core/constants.js';\n\nconst encoder = new TextEncoder();\n\n// eslint-disable-next-line @typescript-eslint/no-restricted-types\nexport const getBodySize = (body?: BodyInit | null): number => {\n\tif (!body) {\n\t\treturn 0;\n\t}\n\n\tif (body instanceof FormData) {\n\t\t// This is an approximation, as FormData size calculation is not straightforward\n\t\tlet size = 0;\n\n\t\tfor (const [key, value] of body) {\n\t\t\tsize += usualFormBoundarySize;\n\t\t\tsize += encoder.encode(`Content-Disposition: form-data; name=\"${key}\"`).byteLength;\n\t\t\tsize += typeof value === 'string'\n\t\t\t\t? encoder.encode(value).byteLength\n\t\t\t\t: value.size;\n\t\t}\n\n\t\treturn size;\n\t}\n\n\tif (body instanceof Blob) {\n\t\treturn body.size;\n\t}\n\n\tif (body instanceof ArrayBuffer || ArrayBuffer.isView(body)) {\n\t\treturn body.byteLength;\n\t}\n\n\tif (typeof body === 'string') {\n\t\treturn encoder.encode(body).byteLength;\n\t}\n\n\tif (body instanceof URLSearchParams) {\n\t\treturn encoder.encode(body.toString()).byteLength;\n\t}\n\n\treturn 0;\n};\n\nconst withProgress = (stream: ReadableStream<Uint8Array>, totalBytes: number, onProgress: Options['onDownloadProgress'] | Options['onUploadProgress']): ReadableStream<Uint8Array> => {\n\tlet previousChunk: Uint8Array | undefined;\n\tlet transferredBytes = 0;\n\n\treturn stream.pipeThrough(new TransformStream<Uint8Array, Uint8Array>({\n\t\ttransform(currentChunk, controller) {\n\t\t\tcontroller.enqueue(currentChunk);\n\n\t\t\tif (previousChunk) {\n\t\t\t\ttransferredBytes += previousChunk.byteLength;\n\n\t\t\t\tlet percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n\t\t\t\t// Avoid reporting 100% progress before the stream is actually finished (in case totalBytes is inaccurate)\n\t\t\t\tif (percent >= 1) {\n\t\t\t\t\t// Epsilon is used here to get as close as possible to 100% without reaching it.\n\t\t\t\t\t// If we were to use 0.99 here, percent could potentially go backwards.\n\t\t\t\t\tpercent = 1 - Number.EPSILON;\n\t\t\t\t}\n\n\t\t\t\tonProgress?.({percent, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes}, previousChunk);\n\t\t\t}\n\n\t\t\tpreviousChunk = currentChunk;\n\t\t},\n\t\tflush() {\n\t\t\tif (previousChunk) {\n\t\t\t\ttransferredBytes += previousChunk.byteLength;\n\t\t\t\tonProgress?.({percent: 1, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes}, previousChunk);\n\t\t\t}\n\t\t},\n\t}));\n};\n\nexport const streamResponse = (response: Response, onDownloadProgress: Options['onDownloadProgress']) => {\n\tif (!response.body) {\n\t\treturn response;\n\t}\n\n\tconst responseInit = {\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t\theaders: response.headers,\n\t};\n\n\tif (response.status === 204) {\n\t\treturn new Response(null, responseInit);\n\t}\n\n\tconst totalBytes = Math.max(0, Number(response.headers.get('content-length')) || 0);\n\treturn new Response(withProgress(response.body, totalBytes, onDownloadProgress), responseInit);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-restricted-types\nexport const streamRequest = (request: Request, onUploadProgress: Options['onUploadProgress'], originalBody?: BodyInit | null) => {\n\tif (!request.body) {\n\t\treturn request;\n\t}\n\n\t// Use original body for size calculation since request.body is already a stream\n\tconst totalBytes = getBodySize(originalBody ?? request.body);\n\n\treturn new Request(request, {\n\t\t// @ts-expect-error - Types are outdated.\n\t\tduplex: 'half',\n\t\tbody: withProgress(request.body, totalBytes, onUploadProgress),\n\t});\n};\n", "// eslint-disable-next-line @typescript-eslint/no-restricted-types\nexport const isObject = (value: unknown): value is object => value !== null && typeof value === 'object';\n", "import type {KyHeadersInit, Options} from '../types/options.js';\nimport type {Hooks} from '../types/hooks.js';\nimport {supportsAbortSignal} from '../core/constants.js';\nimport {isObject} from './is.js';\n\nconst replaceSymbol: unique symbol = Symbol('replaceOption');\n\ntype ReplaceMarked<T> = {\n\t[replaceSymbol]: true;\n\tvalue: T;\n};\n\ntype ReplaceState<T> = {\n\tisReplace: boolean;\n\tvalue: T;\n};\n\nconst getReplaceState = <T>(value: T): ReplaceState<T> =>\n\tisObject(value) && (value as any)[replaceSymbol] === true\n\t\t? {\n\t\t\tisReplace: true,\n\t\t\tvalue: (value as unknown as ReplaceMarked<T>).value,\n\t\t}\n\t\t: {\n\t\t\tisReplace: false,\n\t\t\tvalue,\n\t\t};\n\n/**\nWraps a value so that `ky.extend()` will replace the parent value instead of merging with it. Works with hooks, headers, search parameters, context, and any other deep-merged option.\n\nBy default, `.extend()` deep-merges options with the parent instance: hooks get appended, headers get merged, and search parameters get accumulated. Use `replaceOption` when you want to fully replace a merged property instead.\n\n@example\n```\nimport ky, {replaceOption} from 'ky';\n\nconst base = ky.create({\n\thooks: {beforeRequest: [addAuth, addTracking]},\n});\n\n// Replaces instead of appending\nconst extended = base.extend({\n\thooks: replaceOption({beforeRequest: [onlyThis]}),\n});\n// hooks.beforeRequest is now [onlyThis], not [addAuth, addTracking, onlyThis]\n```\n*/\nexport const replaceOption = <T>(value: T): T => {\n\tconst markedValue: ReplaceMarked<T> = {[replaceSymbol]: true, value};\n\treturn markedValue as unknown as T;\n};\n\nexport const validateAndMerge = (...sources: Array<Partial<Options> | undefined>): Partial<Options> => {\n\tfor (const source of sources) {\n\t\tif ((!isObject(source) || Array.isArray(source)) && source !== undefined) {\n\t\t\tthrow new TypeError('The `options` argument must be an object');\n\t\t}\n\t}\n\n\treturn deepMerge({}, ...sources);\n};\n\nexport const mergeHeaders = (source1: KyHeadersInit = {}, source2: KyHeadersInit = {}) => {\n\tconst result = new globalThis.Headers(source1 as RequestInit['headers']);\n\tconst isHeadersInstance = source2 instanceof globalThis.Headers;\n\tconst source = new globalThis.Headers(source2 as RequestInit['headers']);\n\n\tfor (const [key, value] of source.entries()) {\n\t\tif ((isHeadersInstance && value === 'undefined') || value === undefined) {\n\t\t\tresult.delete(key);\n\t\t} else {\n\t\t\tresult.set(key, value);\n\t\t}\n\t}\n\n\treturn result;\n};\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n\tif (!isObject(value) || Array.isArray(value)) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === Object.prototype || prototype === null;\n};\n\nexport const cloneShallow = <T>(value: T): T => {\n\tif (value instanceof URLSearchParams) {\n\t\tconst copy = new URLSearchParams(value) as URLSearchParams & {[deletedParametersSymbol]?: Set<string>};\n\t\tconst deleted = (value as URLSearchParams & {[deletedParametersSymbol]?: Set<string>})[deletedParametersSymbol];\n\t\tif (deleted) {\n\t\t\t// Preserve internal deletion markers so init-hook cloning does not resurrect params removed during option merging.\n\t\t\tcopy[deletedParametersSymbol] = new Set(deleted);\n\t\t}\n\n\t\treturn copy as T;\n\t}\n\n\tif (value instanceof globalThis.Headers) {\n\t\treturn new globalThis.Headers(value) as T;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn [...value] as T;\n\t}\n\n\tif (isPlainObject(value)) {\n\t\tconst copy = {...value};\n\t\treturn copy as T;\n\t}\n\n\treturn value;\n};\n\nconst normalizeHeaderObject = (headers: Record<string, string | undefined>): Record<string, string> =>\n\tObject.fromEntries(\n\t\tObject.entries(headers).filter((entry): entry is [string, string] => entry[1] !== undefined),\n\t);\n\nconst mergeHeaderContainers = (source1: KyHeadersInit, source2: KyHeadersInit): KyHeadersInit => {\n\tif (isPlainObject(source1) && isPlainObject(source2)) {\n\t\treturn normalizeHeaderObject({...source1, ...source2});\n\t}\n\n\treturn mergeHeaders(source1, source2);\n};\n\nfunction newHookValue<K extends keyof Hooks>(original: Hooks, incoming: Hooks, property: K): Required<Hooks>[K] {\n\treturn (Object.hasOwn(incoming, property) && incoming[property] === undefined)\n\t\t? []\n\t\t: deepMerge<Required<Hooks>[K]>(original[property] ?? [], incoming[property] ?? []);\n}\n\nexport const mergeHooks = (original: Hooks = {}, incoming: Hooks = {}): Required<Hooks> => (\n\t{\n\t\tinit: newHookValue(original, incoming, 'init'),\n\t\tbeforeRequest: newHookValue(original, incoming, 'beforeRequest'),\n\t\tbeforeRetry: newHookValue(original, incoming, 'beforeRetry'),\n\t\tbeforeError: newHookValue(original, incoming, 'beforeError'),\n\t\tafterResponse: newHookValue(original, incoming, 'afterResponse'),\n\t}\n);\n\nexport const deletedParametersSymbol = Symbol('deletedParameters');\n\nconst appendSearchParameters = (target: any, source: any): URLSearchParams => {\n\tconst result = new URLSearchParams() as URLSearchParams & {[deletedParametersSymbol]?: Set<string>};\n\tconst deleted = new Set<string>();\n\n\tfor (const input of [target, source]) {\n\t\tif (input === undefined) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (input instanceof URLSearchParams) {\n\t\t\tfor (const [key, value] of input.entries()) {\n\t\t\t\tresult.append(key, value);\n\t\t\t\tdeleted.delete(key);\n\t\t\t}\n\n\t\t\tconst inputDeleted = (input as any)[deletedParametersSymbol] as Set<string> | undefined;\n\t\t\tif (inputDeleted) {\n\t\t\t\tfor (const key of inputDeleted) {\n\t\t\t\t\tresult.delete(key);\n\t\t\t\t\tdeleted.add(key);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (Array.isArray(input)) {\n\t\t\tfor (const pair of input) {\n\t\t\t\tif (!Array.isArray(pair) || pair.length !== 2) {\n\t\t\t\t\tthrow new TypeError('Array search parameters must be provided in [[key, value], ...] format');\n\t\t\t\t}\n\n\t\t\t\tresult.append(String(pair[0]), String(pair[1]));\n\t\t\t\tdeleted.delete(String(pair[0]));\n\t\t\t}\n\t\t} else if (isObject(input)) {\n\t\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\tresult.delete(key);\n\t\t\t\t\tdeleted.add(key);\n\t\t\t\t} else {\n\t\t\t\t\tresult.append(key, String(value));\n\t\t\t\t\tdeleted.delete(key);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// String\n\t\t\tconst parameters = new URLSearchParams(input);\n\t\t\tfor (const [key, value] of parameters.entries()) {\n\t\t\t\tresult.append(key, value);\n\t\t\t\tdeleted.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (deleted.size > 0) {\n\t\tresult[deletedParametersSymbol] = deleted;\n\t}\n\n\treturn result;\n};\n\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = <T>(...sources: Array<Partial<T> | undefined>): T => {\n\tlet returnValue: any = {};\n\tlet headers: KyHeadersInit = {};\n\tlet hooks = {};\n\tlet searchParameters: any;\n\tconst signals: AbortSignal[] = [];\n\n\tfor (const source of sources) {\n\t\tif (Array.isArray(source)) {\n\t\t\tif (!Array.isArray(returnValue)) {\n\t\t\t\treturnValue = [];\n\t\t\t}\n\n\t\t\treturnValue = [...returnValue, ...source];\n\t\t} else if (isObject(source)) {\n\t\t\tfor (let [key, value] of Object.entries(source)) {\n\t\t\t\t// Special handling for AbortSignal instances\n\t\t\t\tif (key === 'signal' && value instanceof globalThis.AbortSignal) {\n\t\t\t\t\tsignals.push(value);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst replaceState = getReplaceState(value);\n\t\t\t\tconst {isReplace} = replaceState;\n\t\t\t\tvalue = replaceState.value;\n\n\t\t\t\t// Special handling for context - shallow merge only\n\t\t\t\tif (key === 'context') {\n\t\t\t\t\tif (value !== undefined && value !== null && (!isObject(value) || Array.isArray(value))) {\n\t\t\t\t\t\tthrow new TypeError('The `context` option must be an object');\n\t\t\t\t\t}\n\n\t\t\t\t\t// Shallow merge: always create a new object to prevent mutation bugs\n\t\t\t\t\treturnValue = {\n\t\t\t\t\t\t...returnValue,\n\t\t\t\t\t\tcontext: (value === undefined || value === null)\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: (isReplace\n\t\t\t\t\t\t\t\t? {...value}\n\t\t\t\t\t\t\t\t: {...returnValue.context, ...value}),\n\t\t\t\t\t};\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Special handling for searchParams\n\t\t\t\tif (key === 'searchParams') {\n\t\t\t\t\tif (value === undefined || value === null) {\n\t\t\t\t\t\t// Explicit undefined or null removes searchParams\n\t\t\t\t\t\tsearchParameters = undefined;\n\t\t\t\t\t} else if (isReplace) {\n\t\t\t\t\t\tsearchParameters = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// First source: keep as-is to preserve type (string/object/URLSearchParams)\n\t\t\t\t\t\t// Subsequent sources: merge and convert to URLSearchParams\n\t\t\t\t\t\tsearchParameters = searchParameters === undefined ? value : appendSearchParameters(searchParameters, value);\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (isObject(value) && !isReplace && key in returnValue) {\n\t\t\t\t\tvalue = deepMerge(returnValue[key], value);\n\t\t\t\t}\n\n\t\t\t\treturnValue = {...returnValue, [key]: value};\n\t\t\t}\n\n\t\t\tif (isObject((source as any).hooks)) {\n\t\t\t\tconst {value: hookValue, isReplace} = getReplaceState((source as any).hooks);\n\t\t\t\thooks = isReplace\n\t\t\t\t\t? mergeHooks({}, hookValue)\n\t\t\t\t\t: mergeHooks(hooks, hookValue);\n\n\t\t\t\treturnValue.hooks = hooks;\n\t\t\t}\n\n\t\t\tif (isObject((source as any).headers)) {\n\t\t\t\tconst {value: headerValue, isReplace} = getReplaceState((source as any).headers);\n\t\t\t\theaders = isReplace\n\t\t\t\t\t? cloneShallow(headerValue as KyHeadersInit)\n\t\t\t\t\t: mergeHeaderContainers(headers, headerValue as KyHeadersInit);\n\n\t\t\t\treturnValue.headers = headers;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (searchParameters !== undefined) {\n\t\treturnValue.searchParams = searchParameters;\n\t}\n\n\tif (signals.length > 0) {\n\t\tif (signals.length === 1) {\n\t\t\treturnValue.signal = signals[0];\n\t\t} else if (supportsAbortSignal) {\n\t\t\treturnValue.signal = AbortSignal.any(signals);\n\t\t} else {\n\t\t\t// When AbortSignal.any is not available, use the last signal\n\t\t\t// This maintains the previous behavior before signal merging was added\n\t\t\t// This can be remove when the `supportsAbortSignal` check is removed.`\n\t\t\treturnValue.signal = signals.at(-1);\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n", "import {requestMethods} from '../core/constants.js';\nimport type {RetryOptions} from '../types/retry.js';\nimport type {HttpMethod, RequestHttpMethod} from '../types/options.js';\n\nexport const normalizeRequestMethod = (input: string): string =>\n\trequestMethods.includes(input as RequestHttpMethod) ? input.toUpperCase() : input;\n\nconst retryMethods: HttpMethod[] = ['get', 'put', 'head', 'delete', 'options', 'trace'];\n\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\n\nconst retryAfterStatusCodes = [413, 429, 503];\n\ntype InternalRetryOptions = Required<Omit<RetryOptions, 'shouldRetry'>> & Pick<RetryOptions, 'shouldRetry'>;\n\nconst defaultRetryOptions: InternalRetryOptions = {\n\tlimit: 2,\n\tmethods: retryMethods,\n\tstatusCodes: retryStatusCodes,\n\tafterStatusCodes: retryAfterStatusCodes,\n\tmaxRetryAfter: Number.POSITIVE_INFINITY,\n\tbackoffLimit: Number.POSITIVE_INFINITY,\n\tdelay: attemptCount => 0.3 * (2 ** (attemptCount - 1)) * 1000,\n\tjitter: undefined,\n\tretryOnTimeout: false,\n};\n\nexport const normalizeRetryOptions = (retry: number | RetryOptions = {}): InternalRetryOptions => {\n\tif (typeof retry === 'number') {\n\t\treturn {\n\t\t\t...defaultRetryOptions,\n\t\t\tlimit: retry,\n\t\t};\n\t}\n\n\tif (retry.methods && !Array.isArray(retry.methods)) {\n\t\tthrow new Error('retry.methods must be an array');\n\t}\n\n\tif (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n\t\tthrow new Error('retry.statusCodes must be an array');\n\t}\n\n\tconst normalizedRetry = Object.fromEntries(Object.entries({\n\t\t...retry,\n\t\tmethods: retry.methods?.map(method => method.toLowerCase()),\n\t}).filter(([, value]) => value !== undefined)) as RetryOptions;\n\n\treturn {\n\t\t...defaultRetryOptions,\n\t\t...normalizedRetry,\n\t};\n};\n", "import {TimeoutError} from '../errors/TimeoutError.js';\n\nexport type TimeoutOptions = {\n\ttimeout: number;\n\tfetch: typeof fetch;\n};\n\n// `Promise.race()` workaround (#91)\nexport default async function timeout(\n\trequest: Request,\n\tinit: RequestInit,\n\tabortController: AbortController | undefined,\n\toptions: TimeoutOptions,\n): Promise<Response> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tif (abortController) {\n\t\t\t\tabortController.abort();\n\t\t\t}\n\n\t\t\treject(new TimeoutError(request));\n\t\t}, options.timeout);\n\n\t\tvoid options\n\t\t\t.fetch(request, init)\n\t\t\t.then(resolve)\n\t\t\t.catch(reject)\n\t\t\t.then(() => {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t});\n\t});\n}\n", "// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\n\nimport {type InternalOptions} from '../types/options.js';\n\nexport type DelayOptions = {\n\tsignal?: InternalOptions['signal'];\n};\n\nexport default async function delay(\n\tms: number,\n\t{signal}: DelayOptions,\n): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tif (signal) {\n\t\t\tsignal.throwIfAborted();\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tfunction abortHandler() {\n\t\t\tclearTimeout(timeoutId);\n\t\t\treject(signal!.reason as Error);\n\t\t}\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tsignal?.removeEventListener('abort', abortHandler);\n\t\t\tresolve();\n\t\t}, ms);\n\t});\n}\n", "import {kyOptionKeys, requestOptionsRegistry} from '../core/constants.js';\nimport type {SearchParamsOption} from '../types/options.js';\nimport {deletedParametersSymbol} from './merge.js';\n\nexport const findUnknownOptions = (\n\toptions: Record<string, unknown>,\n): Record<string, unknown> => {\n\tconst unknownOptions: Record<string, unknown> = {};\n\n\tfor (const key in options) {\n\t\t// Skip inherited properties\n\t\tif (!Object.hasOwn(options, key)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Forward every non-standard, non-Ky option to fetch().\n\t\t// We intentionally do not check whether the key also exists on `Request`, because some runtimes\n\t\t// patch `Request.prototype` with fetch-only extensions. For example, Next.js adds `next`, and the\n\t\t// old `key in request` heuristic dropped it unless Ky kept a special-case allowlist.\n\t\t// Passing all non-standard keys makes that allowlist unnecessary and preserves future fetch extensions too.\n\t\tif (!(key in requestOptionsRegistry) && !(key in kyOptionKeys)) {\n\t\t\tunknownOptions[key] = options[key];\n\t\t}\n\t}\n\n\treturn unknownOptions;\n};\n\nexport const hasSearchParameters = (search: SearchParamsOption): boolean => {\n\tif (search === undefined) {\n\t\treturn false;\n\t}\n\n\t// The `typeof array` still gives \"object\", so we need different checking for array.\n\tif (Array.isArray(search)) {\n\t\treturn search.length > 0;\n\t}\n\n\tif (search instanceof URLSearchParams) {\n\t\treturn search.size > 0 || Boolean((search as any)[deletedParametersSymbol]?.size);\n\t}\n\n\t// Record\n\tif (typeof search === 'object') {\n\t\treturn Object.keys(search).length > 0;\n\t}\n\n\tif (typeof search === 'string') {\n\t\treturn search.trim().length > 0;\n\t}\n\n\treturn Boolean(search);\n};\n", "// Inlined from https://github.com/sindresorhus/is-network-error v1.3.1\n\nconst objectToString = Object.prototype.toString;\n\nconst isError = (value: unknown): value is Error => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'network error', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n\t'terminated', // Undici (Node.js)\n\t' A network error occurred.', // Bun (WebKit) - leading space is intentional\n\t'Network connection lost', // Cloudflare Workers (fetch)\n]);\n\nexport default function isRawNetworkError(error: unknown): error is TypeError {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\tconst {message, stack} = error;\n\n\t// Safari 17+ has generic message but no stack for network errors\n\tif (message === 'Load failed') {\n\t\treturn stack === undefined\n\t\t\t// Sentry adds its own stack trace to the fetch error, so also check for that\n\t\t\t|| '__sentry_captured__' in error;\n\t}\n\n\t// Deno network errors start with specific text\n\tif (message.startsWith('error sending request for url')) {\n\t\treturn true;\n\t}\n\n\t// Chrome: exact \"Failed to fetch\" or with hostname: \"Failed to fetch (example.com)\"\n\tif (message === 'Failed to fetch' || (message.startsWith('Failed to fetch (') && message.endsWith(')'))) {\n\t\treturn true;\n\t}\n\n\t// Standard network error messages\n\treturn errorMessages.has(message);\n}\n", "import type {KyError} from '../errors/KyError.js';\nimport {HTTPError} from '../errors/HTTPError.js';\nimport {NetworkError} from '../errors/NetworkError.js';\nimport {TimeoutError} from '../errors/TimeoutError.js';\nimport {ForceRetryError} from '../errors/ForceRetryError.js';\n\n// Handles cross-realm cases (e.g., iframes, different JS contexts) where `instanceof` fails.\nconst isErrorType = (error: unknown, cls: {name: string}): boolean =>\n\terror instanceof (cls as any) || (error as any)?.name === cls.name;\n\n/**\nType guard to check if an error is a `KyError`.\n\nNote: `SchemaValidationError` is intentionally not considered a Ky error. `KyError` covers failures in Ky's HTTP lifecycle (bad status, timeout, retry), while schema validation errors originate from the user-provided schema, not from Ky itself.\n\n@param error - The error to check\n@returns `true` if the error is a Ky error, `false` otherwise\n\n@example\n```\nimport ky, {isKyError} from 'ky';\ntry {\n\tconst response = await ky.get('/api/data');\n} catch (error) {\n\tif (isKyError(error)) {\n\t\t// Handle Ky-specific errors\n\t\tconsole.log('Ky error occurred:', error.message);\n\t} else {\n\t\t// Handle other errors\n\t\tconsole.log('Unknown error:', error);\n\t}\n}\n```\n*/\nexport function isKyError(error: unknown): error is KyError {\n\treturn (error as any)?.isKyError === true || isHTTPError(error) || isNetworkError(error) || isTimeoutError(error) || isForceRetryError(error);\n}\n\n/**\nType guard to check if an error is an `HTTPError`.\n\n@param error - The error to check\n@returns `true` if the error is an `HTTPError`, `false` otherwise\n\n@example\n```\nimport ky, {isHTTPError} from 'ky';\ntry {\n\tconst response = await ky.get('/api/data');\n} catch (error) {\n\tif (isHTTPError(error)) {\n\t\tconsole.log('HTTP error status:', error.response.status);\n\t}\n}\n```\n*/\nexport function isHTTPError<T = unknown>(error: unknown): error is HTTPError<T> {\n\treturn isErrorType(error, HTTPError);\n}\n\n/**\nType guard to check if an error is a `NetworkError`.\n\n@param error - The error to check\n@returns `true` if the error is a `NetworkError`, `false` otherwise\n\n@example\n```\nimport ky, {isNetworkError} from 'ky';\ntry {\n\tconst response = await ky.get('/api/data');\n} catch (error) {\n\tif (isNetworkError(error)) {\n\t\tconsole.log('Network error:', error.request.url);\n\t}\n}\n```\n*/\nexport function isNetworkError(error: unknown): error is NetworkError {\n\treturn isErrorType(error, NetworkError);\n}\n\n/**\nType guard to check if an error is a `TimeoutError`.\n\n@param error - The error to check\n@returns `true` if the error is a `TimeoutError`, `false` otherwise\n\n@example\n```\nimport ky, {isTimeoutError} from 'ky';\ntry {\n\tconst response = await ky.get('/api/data', { timeout: 1000 });\n} catch (error) {\n\tif (isTimeoutError(error)) {\n\t\tconsole.log('Request timed out:', error.request.url);\n\t}\n}\n```\n*/\nexport function isTimeoutError(error: unknown): error is TimeoutError {\n\treturn isErrorType(error, TimeoutError);\n}\n\n/**\nType guard to check if an error is a `ForceRetryError`.\n\n@param error - The error to check\n@returns `true` if the error is a `ForceRetryError`, `false` otherwise\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n\thooks: {\n\t\tbeforeRetry: [\n\t\t\t({error, retryCount}) => {\n\t\t\t\tif (isForceRetryError(error)) {\n\t\t\t\t\tconsole.log(`Forced retry #${retryCount}: ${error.code}`);\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n});\n```\n*/\nexport function isForceRetryError(error: unknown): error is ForceRetryError {\n\treturn isErrorType(error, ForceRetryError);\n}\n", "import {HTTPError} from '../errors/HTTPError.js';\nimport {NetworkError} from '../errors/NetworkError.js';\nimport {NonError} from '../errors/NonError.js';\nimport {ForceRetryError} from '../errors/ForceRetryError.js';\nimport {SchemaValidationError} from '../errors/SchemaValidationError.js';\nimport {TimeoutError} from '../errors/TimeoutError.js';\nimport type {\n\tInput,\n\tInternalOptions,\n\tNormalizedOptions,\n\tOptions,\n\tSearchParamsInit,\n\tSearchParamsOption,\n} from '../types/options.js';\nimport {type ResponsePromise} from '../types/ResponsePromise.js';\nimport type {StandardSchemaV1} from '../types/standard-schema.js';\nimport {streamRequest, streamResponse} from '../utils/body.js';\nimport {\n\tcloneShallow,\n\tmergeHeaders,\n\tmergeHooks,\n\tdeletedParametersSymbol,\n} from '../utils/merge.js';\nimport type {RetryOptions} from '../types/retry.js';\nimport {normalizeRequestMethod, normalizeRetryOptions} from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport {type ObjectEntries} from '../utils/types.js';\nimport {findUnknownOptions, hasSearchParameters} from '../utils/options.js';\nimport isRawNetworkError from '../utils/is-network-error.js';\nimport {isHTTPError, isNetworkError, isTimeoutError} from '../utils/type-guards.js';\nimport {\n\tmaxSafeTimeout,\n\tresponseTypes,\n\tstop,\n\tRetryMarker,\n\tsupportsAbortController,\n\tsupportsAbortSignal,\n\tsupportsFormData,\n\tsupportsResponseStreams,\n\tsupportsRequestStreams,\n} from './constants.js';\n\nconst maxErrorResponseBodySize = 10 * 1024 * 1024;\nconst prefixUrlRenamedErrorMessage = 'The `prefixUrl` option has been renamed `prefix` in v2 and enhanced to allow slashes in input. See also the new `baseUrl` option for improved flexibility with standard URL resolution: https://github.com/sindresorhus/ky#baseurl';\nconst timedOutResponseData = Symbol('timedOutResponseData');\n\nconst createTextDecoder = (contentType: string): TextDecoder => {\n\tconst match = /;\\s*charset\\s*=\\s*(?:\"([^\"]+)\"|([^;,\\s]+))/i.exec(contentType);\n\tconst charset = match?.[1] ?? match?.[2];\n\tif (charset) {\n\t\ttry {\n\t\t\treturn new TextDecoder(charset);\n\t\t} catch {}\n\t}\n\n\treturn new TextDecoder();\n};\n\nconst invalidSchemaMessage = 'The `schema` argument must follow the Standard Schema specification';\n\nconst cloneRetryOptions = (retry: RetryOptions | number): RetryOptions | number => {\n\tif (typeof retry !== 'object') {\n\t\treturn retry;\n\t}\n\n\t// Clone nested arrays too so init hooks can mutate retry config without leaking state across requests.\n\treturn {\n\t\t...retry,\n\t\t...(retry.methods && {methods: [...retry.methods]}),\n\t\t...(retry.statusCodes && {statusCodes: [...retry.statusCodes]}),\n\t\t...(retry.afterStatusCodes && {afterStatusCodes: [...retry.afterStatusCodes]}),\n\t};\n};\n\nconst objectToString = Object.prototype.toString;\n\nconst isRequestInstance = (value: unknown): value is Request =>\n\tvalue instanceof globalThis.Request || objectToString.call(value) === '[object Request]';\n\n// Accepted custom responses are treated as full Responses throughout Ky.\n// If a custom fetch returns one, it must behave like a Response for cloning,\n// body consumption, `json()` decoration, and any enabled stream features.\nconst isResponseInstance = (value: unknown): value is Response =>\n\tvalue instanceof globalThis.Response || objectToString.call(value) === '[object Response]';\n\nconst cloneSearchParametersForInitHook = (searchParameters: SearchParamsOption | undefined): SearchParamsOption | undefined => {\n\tif (Array.isArray(searchParameters)) {\n\t\treturn searchParameters.map(parameter => [...parameter]) as SearchParamsOption;\n\t}\n\n\treturn cloneShallow(searchParameters) as SearchParamsOption | undefined;\n};\n\n// Shallow-clone mutable option properties so init hook mutations don't leak across requests.\nfunction cloneInitHookOptions(options: Options): Options {\n\tconst clonedOptions: Options = {\n\t\t...options,\n\t\tjson: cloneShallow(options.json),\n\t\tcontext: cloneShallow(options.context)!,\n\t\theaders: cloneShallow(options.headers)!,\n\t\tsearchParams: cloneSearchParametersForInitHook(options.searchParams),\n\t};\n\n\tif (options.retry !== undefined) {\n\t\tclonedOptions.retry = cloneRetryOptions(options.retry);\n\t}\n\n\treturn clonedOptions;\n}\n\nconst validateJsonWithSchema = async (jsonValue: unknown, schema: StandardSchemaV1): Promise<unknown> => {\n\tif (\n\t\t(\n\t\t\ttypeof schema !== 'object'\n\t\t\t&& typeof schema !== 'function'\n\t\t)\n\t\t|| schema === null\n\t) {\n\t\tthrow new TypeError(invalidSchemaMessage);\n\t}\n\n\tconst standardSchema = schema['~standard'];\n\n\tif (\n\t\ttypeof standardSchema !== 'object'\n\t\t|| standardSchema === null\n\t\t|| typeof standardSchema.validate !== 'function'\n\t) {\n\t\tthrow new TypeError(invalidSchemaMessage);\n\t}\n\n\tconst validationResult = await standardSchema.validate(jsonValue);\n\n\tif (validationResult.issues) {\n\t\tthrow new SchemaValidationError(validationResult.issues);\n\t}\n\n\treturn validationResult.value;\n};\n\nexport class Ky {\n\tstatic create(input: Input, options: Options): ResponsePromise {\n\t\tconst initHooks = options.hooks?.init ?? [];\n\t\tconst initHookOptions = initHooks.length > 0 ? cloneInitHookOptions(options) : options;\n\n\t\tfor (const hook of initHooks) {\n\t\t\thook(initHookOptions);\n\t\t}\n\n\t\tconst ky = new Ky(input, initHookOptions);\n\n\t\tconst function_ = async (): Promise<Response | void> => {\n\t\t\tif (typeof ky.#options.timeout === 'number' && ky.#options.timeout > maxSafeTimeout) {\n\t\t\t\tthrow new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n\t\t\t}\n\n\t\t\tif (typeof ky.#options.totalTimeout === 'number' && ky.#options.totalTimeout > maxSafeTimeout) {\n\t\t\t\tthrow new RangeError(`The \\`totalTimeout\\` option cannot be greater than ${maxSafeTimeout}`);\n\t\t\t}\n\n\t\t\t// Delay the fetch so that body method shortcuts can set the Accept header\n\t\t\tawait Promise.resolve();\n\t\t\tconst beforeRequestResponse = await ky.#runBeforeRequestHooks();\n\t\t\tlet response = beforeRequestResponse ?? await ky.#retry(async () => ky.#fetch());\n\t\t\tlet responseFromHook = beforeRequestResponse !== undefined\n\t\t\t\t|| ky.#consumeReturnedResponseFromBeforeRetryHook();\n\n\t\t\tfor (;;) {\n\t\t\t\t// `undefined` means a hook stopped the flow without providing a response.\n\t\t\t\t// Non-native Responses still continue through Ky if they pass `isResponseInstance()`.\n\t\t\t\tif (response === undefined) {\n\t\t\t\t\treturn response;\n\t\t\t\t}\n\n\t\t\t\tif (isResponseInstance(response)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\t\tresponse = await ky.#runAfterResponseHooks(response);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (!(error instanceof ForceRetryError)) {\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\t\tconst retriedResponse: Response | void = await ky.#retryFromError(error, async () => ky.#fetch());\n\t\t\t\t\t\tif (retriedResponse === undefined) {\n\t\t\t\t\t\t\treturn retriedResponse;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresponse = retriedResponse;\n\t\t\t\t\t\tresponseFromHook = ky.#consumeReturnedResponseFromBeforeRetryHook();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst currentResponse: Response = response;\n\n\t\t\t\t// Opaque responses (`response.type === 'opaque'`) from `no-cors` requests always have `status: 0` and `ok: false`, but this is not a failure - the actual status is hidden by the browser.\n\t\t\t\tif (!currentResponse.ok && currentResponse.type !== 'opaque' && (\n\t\t\t\t\ttypeof ky.#options.throwHttpErrors === 'function'\n\t\t\t\t\t\t? ky.#options.throwHttpErrors(currentResponse.status)\n\t\t\t\t\t\t: ky.#options.throwHttpErrors\n\t\t\t\t)) {\n\t\t\t\t\t// `request` must reflect the request that actually failed, but `options` stays as Ky's\n\t\t\t\t\t// normalized options snapshot. Replacement `Request` instances do not preserve the\n\t\t\t\t\t// original `BodyInit`, so trying to make `options` mirror arbitrary requests would be lossy.\n\t\t\t\t\tconst httpError: HTTPError = new HTTPError(currentResponse, ky.#getResponseRequest(currentResponse), ky.#getNormalizedOptions());\n\t\t\t\t\tconst errorToThrow: Error = httpError;\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\thttpError.data = await ky.#getResponseData(currentResponse);\n\n\t\t\t\t\tif (responseFromHook) {\n\t\t\t\t\t\tthrow errorToThrow;\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tconst retriedResponse: Response | void = await ky.#retryFromError(httpError, async () => ky.#fetch());\n\t\t\t\t\tif (retriedResponse === undefined) {\n\t\t\t\t\t\treturn retriedResponse;\n\t\t\t\t\t}\n\n\t\t\t\t\tresponse = retriedResponse;\n\t\t\t\t\tresponseFromHook = ky.#consumeReturnedResponseFromBeforeRetryHook();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!isResponseInstance(response)) {\n\t\t\t\treturn response;\n\t\t\t}\n\n\t\t\tky.#decorateResponse(response);\n\n\t\t\t// If `onDownloadProgress` is passed, it uses the stream API internally\n\t\t\tif (ky.#options.onDownloadProgress) {\n\t\t\t\tif (typeof ky.#options.onDownloadProgress !== 'function') {\n\t\t\t\t\tthrow new TypeError('The `onDownloadProgress` option must be a function');\n\t\t\t\t}\n\n\t\t\t\tif (!supportsResponseStreams) {\n\t\t\t\t\tthrow new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n\t\t\t\t}\n\n\t\t\t\tconst progressResponse = response.clone();\n\t\t\t\tky.#cancelResponseBody(response);\n\t\t\t\treturn streamResponse(progressResponse, ky.#options.onDownloadProgress);\n\t\t\t}\n\n\t\t\treturn response;\n\t\t};\n\n\t\tconst result = (async () => {\n\t\t\ttry {\n\t\t\t\treturn await function_();\n\t\t\t} catch (error: unknown) {\n\t\t\t\t// Non-Error throws (e.g., thrown strings) pass through unchanged\n\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Errors thrown by beforeRetry hooks must propagate unchanged.\n\t\t\t\tif (ky.#beforeRetryHookErrors.has(error)) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tlet processedError: Error = error;\n\t\t\t\tfor (const hook of ky.#options.hooks.beforeError) {\n\t\t\t\t\t// `request` is the current failing request. `options` intentionally remains the\n\t\t\t\t\t// stable normalized Ky options snapshot for the same reason as `HTTPError` above.\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tconst hookResult: unknown = await hook({\n\t\t\t\t\t\trequest: ky.request,\n\t\t\t\t\t\toptions: ky.#getNormalizedOptions(),\n\t\t\t\t\t\terror: processedError,\n\t\t\t\t\t\tretryCount: ky.#retryCount,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Only overwrite if the hook returns a valid Error instance.\n\t\t\t\t\tif (hookResult instanceof Error) {\n\t\t\t\t\t\tprocessedError = hookResult;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthrow processedError;\n\t\t\t} finally {\n\t\t\t\tconst originalRequest = ky.#originalRequest;\n\n\t\t\t\t// Ignore cancellation errors from already-locked or already-consumed streams.\n\t\t\t\tky.#cancelBody(originalRequest?.body ?? undefined);\n\t\t\t\t// Only cancel the current request body if it's distinct from the original (i.e. it was cloned for retries).\n\t\t\t\tif (ky.request !== originalRequest) {\n\t\t\t\t\tky.#cancelBody(ky.request.body ?? undefined);\n\t\t\t\t}\n\t\t\t}\n\t\t})() as ResponsePromise;\n\n\t\tfor (const [type, mimeType] of Object.entries(responseTypes) as ObjectEntries<typeof responseTypes>) {\n\t\t\t// Only expose `.bytes()` when the environment implements it.\n\t\t\tif (\n\t\t\t\ttype === 'bytes'\n\t\t\t\t&& typeof (globalThis.Response?.prototype as unknown as {bytes?: unknown})?.bytes !== 'function'\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult[type] = async (schema?: StandardSchemaV1) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\t\t\tky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n\n\t\t\t\tconst response = await result;\n\n\t\t\t\tif (type !== 'json') {\n\t\t\t\t\treturn response[type]();\n\t\t\t\t}\n\n\t\t\t\tconst text = await response.text();\n\t\t\t\tif (text === '') {\n\t\t\t\t\tif (schema !== undefined) {\n\t\t\t\t\t\treturn validateJsonWithSchema(undefined, schema);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn JSON.parse(text);\n\t\t\t\t}\n\n\t\t\t\tconst jsonValue = initHookOptions.parseJson\n\t\t\t\t\t? await initHookOptions.parseJson(text, {request: ky.#getResponseRequest(response), response})\n\t\t\t\t\t: JSON.parse(text);\n\n\t\t\t\treturn schema === undefined ? jsonValue : validateJsonWithSchema(jsonValue, schema);\n\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// eslint-disable-next-line unicorn/prevent-abbreviations\n\tstatic #normalizeSearchParams(searchParams: SearchParamsOption): SearchParamsOption {\n\t\t// Filter out undefined values from plain objects\n\t\tif (searchParams && typeof searchParams === 'object' && !Array.isArray(searchParams) && !(searchParams instanceof URLSearchParams)) {\n\t\t\treturn Object.fromEntries(Object.entries(searchParams).filter(([, value]) => value !== undefined));\n\t\t}\n\n\t\treturn searchParams;\n\t}\n\n\tpublic request: Request;\n\t#abortController?: AbortController;\n\t#retryCount = 0;\n\t// eslint-disable-next-line @typescript-eslint/prefer-readonly -- False positive: #input is reassigned on line 202\n\t#input: Input;\n\treadonly #options: InternalOptions;\n\t#originalRequest?: Request;\n\treadonly #userProvidedAbortSignal?: AbortSignal;\n\treadonly #beforeRetryHookErrors = new WeakSet<Error>();\n\t#cachedNormalizedOptions: NormalizedOptions | undefined;\n\treadonly #startTime: number | undefined;\n\t#returnedResponseFromBeforeRetryHook = false;\n\treadonly #responseRequests = new WeakMap<Response, Request>();\n\n\t// eslint-disable-next-line complexity\n\tconstructor(input: Input, options: Options = {}) {\n\t\tthis.#input = input;\n\t\tif (Object.hasOwn(options, 'prefixUrl')) {\n\t\t\tthrow new Error(prefixUrlRenamedErrorMessage);\n\t\t}\n\n\t\tthis.#options = {\n\t\t\t...options,\n\t\t\theaders: mergeHeaders((this.#input as Request).headers, options.headers),\n\t\t\thooks: mergeHooks({}, options.hooks),\n\t\t\tmethod: normalizeRequestMethod(options.method ?? (this.#input as Request).method ?? 'GET'),\n\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n\t\t\tprefix: String(options.prefix || ''),\n\t\t\tretry: normalizeRetryOptions(options.retry),\n\t\t\tthrowHttpErrors: options.throwHttpErrors ?? true,\n\t\t\ttimeout: options.timeout ?? 10_000,\n\t\t\ttotalTimeout: options.totalTimeout ?? false,\n\t\t\tfetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n\t\t\tcontext: options.context ?? {},\n\t\t};\n\n\t\tif (typeof this.#input !== 'string' && !(this.#input instanceof URL || this.#input instanceof globalThis.Request)) {\n\t\t\tthrow new TypeError('`input` must be a string, URL, or Request');\n\t\t}\n\n\t\tif (typeof this.#input === 'string') {\n\t\t\tif (this.#options.prefix) {\n\t\t\t\tconst normalizedPrefix = this.#options.prefix.replace(/\\/+$/, '');\n\t\t\t\tconst normalizedInput = this.#input.replace(/^\\/+/, '');\n\t\t\t\tthis.#input = `${normalizedPrefix}/${normalizedInput}`;\n\t\t\t}\n\n\t\t\tif (this.#options.baseUrl) {\n\t\t\t\tlet absoluteInput: URL | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tabsoluteInput = new URL(this.#input);\n\t\t\t\t} catch {}\n\n\t\t\t\tif (!absoluteInput) {\n\t\t\t\t\tthis.#input = new URL(this.#input, (new Request(this.#options.baseUrl)).url);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (supportsAbortController && supportsAbortSignal) {\n\t\t\tthis.#userProvidedAbortSignal = this.#options.signal ?? (this.#input as Request).signal;\n\t\t\tthis.#abortController = new globalThis.AbortController();\n\t\t\tthis.#options.signal = this.#createManagedSignal();\n\t\t}\n\n\t\tif (supportsRequestStreams) {\n\t\t\t// @ts-expect-error - Types are outdated.\n\t\t\tthis.#options.duplex = 'half';\n\t\t}\n\n\t\tif (this.#options.json !== undefined) {\n\t\t\tthis.#options.body = this.#options.stringifyJson?.(this.#options.json) ?? JSON.stringify(this.#options.json);\n\t\t\tthis.#options.headers.set('content-type', this.#options.headers.get('content-type') ?? 'application/json');\n\t\t}\n\n\t\t// To provide correct form boundary, Content-Type header should be deleted when creating Request from another Request with FormData/URLSearchParams body\n\t\t// Only delete if user didn't explicitly provide a custom content-type\n\t\tconst userProvidedContentType = options.headers && new globalThis.Headers(options.headers as HeadersInit).has('content-type');\n\t\tif (\n\t\t\tthis.#input instanceof globalThis.Request\n\t\t\t&& ((supportsFormData && this.#options.body instanceof globalThis.FormData) || this.#options.body instanceof URLSearchParams)\n\t\t\t&& !userProvidedContentType\n\t\t) {\n\t\t\tthis.#options.headers.delete('content-type');\n\t\t}\n\n\t\tthis.request = new globalThis.Request(this.#input, this.#options);\n\n\t\tif (hasSearchParameters(this.#options.searchParams)) {\n\t\t\tconst url = new URL(this.request.url);\n\t\t\tconst deleted = (this.#options.searchParams as any)?.[deletedParametersSymbol] as Set<string> | undefined;\n\n\t\t\tif (deleted) {\n\t\t\t\t// Remove keys from the input URL first so later searchParams entries can intentionally re-add them.\n\t\t\t\tfor (const key of deleted) {\n\t\t\t\t\turl.searchParams.delete(key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof this.#options.searchParams === 'string') {\n\t\t\t\tconst stringSearchParameters = this.#options.searchParams.replace(/^\\?/, '');\n\t\t\t\tif (stringSearchParameters !== '') {\n\t\t\t\t\turl.search = url.search ? `${url.search}&${stringSearchParameters}` : `?${stringSearchParameters}`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst optionsSearchParameters = new URLSearchParams(Ky.#normalizeSearchParams(this.#options.searchParams) as unknown as SearchParamsInit);\n\n\t\t\t\tfor (const [key, value] of optionsSearchParameters.entries()) {\n\t\t\t\t\turl.searchParams.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tthis.#options.searchParams\n\t\t\t\t&& typeof this.#options.searchParams === 'object'\n\t\t\t\t&& !Array.isArray(this.#options.searchParams)\n\t\t\t\t&& !(this.#options.searchParams instanceof URLSearchParams)\n\t\t\t) {\n\t\t\t\tfor (const [key, value] of Object.entries(this.#options.searchParams)) {\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\turl.searchParams.delete(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Recreate request with the updated URL. We already have all options in this.#options, including duplex.\n\t\t\tthis.request = new globalThis.Request(url, this.#options as RequestInit);\n\t\t}\n\n\t\tif (this.#options.onUploadProgress && typeof this.#options.onUploadProgress !== 'function') {\n\t\t\tthrow new TypeError('The `onUploadProgress` option must be a function');\n\t\t}\n\n\t\t// `totalTimeout` starts when the request pipeline is created, so it also includes\n\t\t// Ky's internal scheduling and user hook time before the first fetch attempt.\n\t\tthis.#startTime = typeof this.#options.totalTimeout === 'number' ? this.#getCurrentTime() : undefined;\n\t}\n\n\t#calculateDelay(): number {\n\t\tconst retryDelay = this.#options.retry.delay(this.#retryCount + 1);\n\n\t\tlet jitteredDelay = retryDelay;\n\t\tif (this.#options.retry.jitter === true) {\n\t\t\tjitteredDelay = Math.random() * retryDelay;\n\t\t} else if (typeof this.#options.retry.jitter === 'function') {\n\t\t\tjitteredDelay = this.#options.retry.jitter(retryDelay);\n\n\t\t\tif (!Number.isFinite(jitteredDelay) || jitteredDelay < 0) {\n\t\t\t\tjitteredDelay = retryDelay;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this.#options.retry.backoffLimit, jitteredDelay);\n\t}\n\n\tasync #calculateRetryDelay(error: unknown) {\n\t\tif (this.#retryCount >= this.#options.retry.limit) {\n\t\t\tthrow error;\n\t\t}\n\n\t\t// Wrap non-Error throws to ensure consistent error handling\n\t\tconst errorObject = error instanceof Error ? error : new NonError(error);\n\n\t\t// Handle forced retry from afterResponse hook - skip method check and shouldRetry\n\t\tif (errorObject instanceof ForceRetryError) {\n\t\t\treturn errorObject.customDelay ?? this.#calculateDelay();\n\t\t}\n\n\t\t// Check if method is retriable for non-forced retries\n\t\tif (!this.#options.retry.methods.includes(this.request.method.toLowerCase())) {\n\t\t\tthrow error;\n\t\t}\n\n\t\t// User-provided shouldRetry function takes precedence over default checks (retryOnTimeout, status codes, etc.)\n\t\tif (this.#options.retry.shouldRetry !== undefined) {\n\t\t\tconst result = await this.#options.retry.shouldRetry({error: errorObject, retryCount: this.#retryCount + 1});\n\n\t\t\t// Strict boolean checking - only exact true/false are handled specially\n\t\t\tif (result === false) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (result === true) {\n\t\t\t\t// Force retry - skip all other validation and return delay\n\t\t\t\treturn this.#calculateDelay();\n\t\t\t}\n\n\t\t\t// If undefined or any other value, fall through to default behavior\n\t\t}\n\n\t\t// Default timeout behavior\n\t\tif (isTimeoutError(error)) {\n\t\t\tif (!this.#options.retry.retryOnTimeout) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn this.#calculateDelay();\n\t\t}\n\n\t\tif (isHTTPError(error)) {\n\t\t\tif (!this.#options.retry.statusCodes.includes(error.response.status)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tconst retryAfter = error.response.headers.get('Retry-After')\n\t\t\t\t?? error.response.headers.get('RateLimit-Reset')\n\t\t\t\t?? error.response.headers.get('X-RateLimit-Retry-After') // Symfony-based services\n\t\t\t\t?? error.response.headers.get('X-RateLimit-Reset') // GitHub\n\t\t\t\t?? error.response.headers.get('X-Rate-Limit-Reset'); // Twitter\n\t\t\tif (retryAfter && this.#options.retry.afterStatusCodes.includes(error.response.status)) {\n\t\t\t\tlet after = Number(retryAfter) * 1000;\n\t\t\t\tif (Number.isNaN(after)) {\n\t\t\t\t\tafter = Date.parse(retryAfter) - Date.now();\n\t\t\t\t} else if (after >= Date.parse('2024-01-01')) {\n\t\t\t\t\t// A large number is treated as a timestamp (fixed threshold protects against clock skew)\n\t\t\t\t\tafter -= Date.now();\n\t\t\t\t}\n\n\t\t\t\tif (!Number.isFinite(after)) {\n\t\t\t\t\treturn Math.min(this.#options.retry.maxRetryAfter, this.#calculateDelay());\n\t\t\t\t}\n\n\t\t\t\tafter = Math.max(0, after);\n\n\t\t\t\t// Don't apply jitter when server provides explicit retry timing\n\t\t\t\treturn Math.min(this.#options.retry.maxRetryAfter, after);\n\t\t\t}\n\n\t\t\tif (error.response.status === 413) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\treturn this.#calculateDelay();\n\t\t}\n\n\t\t// Only retry known retriable error types. Unknown errors (e.g., programming bugs) are not retried.\n\t\tif (!isNetworkError(error)) {\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn this.#calculateDelay();\n\t}\n\n\t#decorateResponse(response: Response): Response {\n\t\tconst request = this.#getResponseRequest(response);\n\n\t\tif (this.#options.parseJson) {\n\t\t\tresponse.json = async () => {\n\t\t\t\tconst text = await response.text();\n\t\t\t\tif (text === '') {\n\t\t\t\t\treturn JSON.parse(text);\n\t\t\t\t}\n\n\t\t\t\treturn this.#options.parseJson!(text, {request, response});\n\t\t\t};\n\t\t}\n\n\t\treturn response;\n\t}\n\n\tasync #getResponseData(response: Response): Promise<unknown> {\n\t\t// Even with request timeouts disabled, bound error-body reads so retries and error propagation\n\t\t// cannot be stalled indefinitely by never-ending response streams.\n\t\tconst text = await this.#readResponseText(response, this.#getErrorDataTimeout());\n\t\tif (text === timedOutResponseData) {\n\t\t\tthis.#throwIfTotalTimeoutExhausted();\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!text) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!this.#isJsonContentType(response.headers.get('content-type') ?? '')) {\n\t\t\treturn text;\n\t\t}\n\n\t\tconst data = await this.#parseJson(text, response, this.#getErrorDataTimeout(), this.#getResponseRequest(response));\n\t\tif (data === timedOutResponseData) {\n\t\t\tthis.#throwIfTotalTimeoutExhausted();\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t#getErrorDataTimeout(): number {\n\t\tconst errorDataTimeout = this.#options.timeout === false ? 10_000 : this.#options.timeout;\n\t\tconst remainingTotal = this.#getRemainingTotalTimeout();\n\t\tif (remainingTotal === undefined) {\n\t\t\treturn errorDataTimeout;\n\t\t}\n\n\t\tif (remainingTotal <= 0) {\n\t\t\tthrow new TimeoutError(this.request);\n\t\t}\n\n\t\treturn Math.min(errorDataTimeout, remainingTotal);\n\t}\n\n\t#isJsonContentType(contentType: string): boolean {\n\t\t// Match JSON subtypes like `json`, `problem+json`, and `vnd.api+json`.\n\t\tconst mimeType = (contentType.split(';', 1)[0] ?? '').trim().toLowerCase();\n\t\treturn /\\/(?:.*[.+-])?json$/.test(mimeType);\n\t}\n\n\tasync #readResponseText(response: Response, timeoutMs: number): Promise<string | typeof timedOutResponseData | undefined> {\n\t\tconst {body} = response;\n\t\tif (!body) {\n\t\t\ttry {\n\t\t\t\treturn await response.text();\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\n\t\tlet reader: ReadableStreamDefaultReader<Uint8Array>;\n\t\ttry {\n\t\t\treader = body.getReader();\n\t\t} catch {\n\t\t\t// Another consumer already locked the stream.\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst decoder = createTextDecoder(response.headers.get('content-type') ?? '');\n\t\tconst chunks: string[] = [];\n\t\tlet totalBytes = 0;\n\n\t\tconst readAll = (async (): Promise<string | undefined> => {\n\t\t\ttry {\n\t\t\t\tfor (;;) {\n\t\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\t\tconst {done, value} = await reader.read();\n\t\t\t\t\tif (done) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\ttotalBytes += value.byteLength;\n\t\t\t\t\tif (totalBytes > maxErrorResponseBodySize) {\n\t\t\t\t\t\tvoid reader.cancel().catch(() => undefined);\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\tchunks.push(decoder.decode(value, {stream: true}));\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tchunks.push(decoder.decode());\n\t\t\treturn chunks.join('');\n\t\t})();\n\n\t\tconst timeoutPromise = new Promise<typeof timedOutResponseData>(resolve => {\n\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\tresolve(timedOutResponseData);\n\t\t\t}, timeoutMs);\n\t\t\tvoid readAll.finally(() => {\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t});\n\t\t});\n\n\t\tconst result = await Promise.race([readAll, timeoutPromise]);\n\t\tif (result === timedOutResponseData) {\n\t\t\tvoid reader.cancel().catch(() => undefined);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tasync #parseJson(text: string, response: Response, timeoutMs: number, request: Request): Promise<unknown> {\n\t\tlet timeoutId: ReturnType<typeof setTimeout> | undefined;\n\t\ttry {\n\t\t\treturn await Promise.race([\n\t\t\t\tPromise.resolve().then(() => this.#options.parseJson\n\t\t\t\t\t? this.#options.parseJson(text, {request, response})\n\t\t\t\t\t: JSON.parse(text),\n\t\t\t\t),\n\t\t\t\tnew Promise<typeof timedOutResponseData>(resolve => {\n\t\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\t\tresolve(timedOutResponseData);\n\t\t\t\t\t}, timeoutMs);\n\t\t\t\t}),\n\t\t\t]);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t} finally {\n\t\t\tclearTimeout(timeoutId);\n\t\t}\n\t}\n\n\t#cancelBody(body: ReadableStream | undefined): void {\n\t\tif (!body) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ignore cancellation failures from already-locked or already-consumed streams.\n\t\tvoid body.cancel().catch(() => undefined);\n\t}\n\n\t#cancelResponseBody(response: Response): void {\n\t\t// Ignore cancellation failures from already-locked or already-consumed streams.\n\t\tthis.#cancelBody(response.body ?? undefined);\n\t}\n\n\t#createManagedSignal(): AbortSignal {\n\t\treturn this.#userProvidedAbortSignal\n\t\t\t? AbortSignal.any([this.#userProvidedAbortSignal, this.#abortController!.signal])\n\t\t\t: this.#abortController!.signal;\n\t}\n\n\t#throwIfTotalTimeoutExhausted(): void {\n\t\tconst remaining = this.#getRemainingTotalTimeout();\n\t\tif (remaining !== undefined && remaining <= 0) {\n\t\t\tthrow new TimeoutError(this.request);\n\t\t}\n\t}\n\n\tasync #runBeforeRequestHooks(): Promise<Response | undefined> {\n\t\tfor (const hook of this.#options.hooks.beforeRequest) {\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tconst result = await hook({\n\t\t\t\trequest: this.request,\n\t\t\t\toptions: this.#getNormalizedOptions(),\n\t\t\t\tretryCount: 0,\n\t\t\t});\n\n\t\t\tif (isRequestInstance(result)) {\n\t\t\t\tthis.#assignRequest(result);\n\t\t\t} else if (isResponseInstance(result)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tasync #runAfterResponseHooks(response: Response): Promise<Response> {\n\t\tconst responseRequest = this.#getResponseRequest(response);\n\n\t\tfor (const hook of this.#options.hooks.afterResponse) {\n\t\t\tconst hookResponse = this.#setResponseRequest(response.clone(), responseRequest);\n\t\t\tthis.#decorateResponse(hookResponse);\n\n\t\t\tlet modifiedResponse;\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tmodifiedResponse = await hook({\n\t\t\t\t\trequest: this.request,\n\t\t\t\t\toptions: this.#getNormalizedOptions(),\n\t\t\t\t\tresponse: hookResponse,\n\t\t\t\t\tretryCount: this.#retryCount,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\t// Cancel both responses to prevent memory leaks when hook throws\n\t\t\t\tif (hookResponse !== response) {\n\t\t\t\t\tthis.#cancelResponseBody(hookResponse);\n\t\t\t\t}\n\n\t\t\t\tthis.#cancelResponseBody(response);\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (modifiedResponse instanceof RetryMarker) {\n\t\t\t\t// Cancel both the cloned response passed to the hook and the current response to prevent resource leaks (especially important in Deno/Bun).\n\t\t\t\t// Do not await cancellation since hooks can clone the response, leaving extra tee branches that keep cancel promises pending per the Streams spec.\n\t\t\t\tif (hookResponse !== response) {\n\t\t\t\t\tthis.#cancelResponseBody(hookResponse);\n\t\t\t\t}\n\n\t\t\t\tthis.#cancelResponseBody(response);\n\t\t\t\tthrow new ForceRetryError(modifiedResponse.options);\n\t\t\t}\n\n\t\t\tconst nextResponse = isResponseInstance(modifiedResponse)\n\t\t\t\t? this.#setResponseRequest(modifiedResponse, responseRequest)\n\t\t\t\t: response;\n\n\t\t\t// Cancel any response bodies we won't use to prevent memory leaks.\n\t\t\t// Uses fire-and-forget since hooks may have cloned the response, creating tee branches that block cancellation.\n\t\t\t// If the hook wrapped an existing body into a new Response, both Response objects can still point at the same stream.\n\t\t\tif (hookResponse !== response && hookResponse !== nextResponse && hookResponse.body !== nextResponse.body) {\n\t\t\t\tthis.#cancelResponseBody(hookResponse);\n\t\t\t}\n\n\t\t\tif (response !== nextResponse && response.body !== nextResponse.body) {\n\t\t\t\tthis.#cancelResponseBody(response);\n\t\t\t}\n\n\t\t\tresponse = nextResponse;\n\t\t}\n\n\t\treturn response;\n\t}\n\n\tasync #retry<T extends (...arguments_: any) => Promise<any>>(function_: T): Promise<ReturnType<T> | Response | void> {\n\t\ttry {\n\t\t\treturn await function_();\n\t\t} catch (error) {\n\t\t\treturn this.#retryFromError(error, function_);\n\t\t}\n\t}\n\n\tasync #retryFromError<T extends (...arguments_: any) => Promise<any>>(error: unknown, function_: T): Promise<ReturnType<T> | Response | void> {\n\t\tthis.#returnedResponseFromBeforeRetryHook = false;\n\n\t\tconst retryDelay = Math.min(await this.#calculateRetryDelay(error), maxSafeTimeout);\n\t\tconst delayOptions = {signal: this.#userProvidedAbortSignal};\n\n\t\tconst remainingTimeout = this.#getRemainingTotalTimeout();\n\t\tif (remainingTimeout !== undefined) {\n\t\t\tif (remainingTimeout <= 0) {\n\t\t\t\tthrow new TimeoutError(this.request);\n\t\t\t}\n\n\t\t\t// If waiting would consume all remaining budget, time out without starting another request.\n\t\t\tif (retryDelay >= remainingTimeout) {\n\t\t\t\tawait delay(remainingTimeout, delayOptions);\n\t\t\t\tthrow new TimeoutError(this.request);\n\t\t\t}\n\t\t}\n\n\t\t// Only use user-provided signal for delay, not our internal abortController\n\t\tawait delay(retryDelay, delayOptions);\n\n\t\tthis.#throwIfTotalTimeoutExhausted();\n\n\t\t// Apply custom request from forced retry before beforeRetry hooks\n\t\t// Ensure the custom request has the correct managed signal for timeouts and user aborts\n\t\tif (error instanceof ForceRetryError && error.customRequest) {\n\t\t\tconst customRequest = new globalThis.Request(error.customRequest, this.#options.signal ? {signal: this.#options.signal} : undefined);\n\t\t\t// Replacement Requests are authoritative by design. Do not rewrite headers here,\n\t\t\t// even for cross-origin retries. Callers using `ky.retry({request})` explicitly\n\t\t\t// opted into the exact Request they constructed.\n\t\t\tthis.#assignRequest(customRequest);\n\t\t}\n\n\t\tfor (const hook of this.#options.hooks.beforeRetry) {\n\t\t\tlet hookResult: Awaited<ReturnType<typeof hook>>;\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\thookResult = await hook({\n\t\t\t\t\trequest: this.request,\n\t\t\t\t\toptions: this.#getNormalizedOptions(),\n\t\t\t\t\terror: error as Error,\n\t\t\t\t\tretryCount: this.#retryCount + 1,\n\t\t\t\t});\n\t\t\t} catch (hookError) {\n\t\t\t\t// Preserve the original request error path (`throw error`) so beforeError hooks can still run.\n\t\t\t\tif (hookError instanceof Error && hookError !== error) {\n\t\t\t\t\tthis.#beforeRetryHookErrors.add(hookError);\n\t\t\t\t}\n\n\t\t\t\tthrow hookError;\n\t\t\t}\n\n\t\t\tif (isRequestInstance(hookResult)) {\n\t\t\t\t// Same contract as `ky.retry({request})`: a Request returned from `beforeRetry`\n\t\t\t\t// is used as-is rather than being sanitized or otherwise rewritten by Ky.\n\t\t\t\tthis.#assignRequest(hookResult);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (isResponseInstance(hookResult)) {\n\t\t\t\tthis.#returnedResponseFromBeforeRetryHook = true;\n\t\t\t\tthis.#retryCount++;\n\t\t\t\treturn hookResult;\n\t\t\t}\n\n\t\t\t// If `stop` is returned from the hook, the retry process is stopped\n\t\t\tif (hookResult === stop) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.#throwIfTotalTimeoutExhausted();\n\n\t\tthis.#retryCount++;\n\t\treturn this.#retry(function_);\n\t}\n\n\t#consumeReturnedResponseFromBeforeRetryHook(): boolean {\n\t\tconst value = this.#returnedResponseFromBeforeRetryHook;\n\t\tthis.#returnedResponseFromBeforeRetryHook = false;\n\t\treturn value;\n\t}\n\n\tasync #fetch(): Promise<Response> {\n\t\t// Reset abortController if it was aborted (happens on timeout retry)\n\t\tif (this.#abortController?.signal.aborted) {\n\t\t\tthis.#abortController = new globalThis.AbortController();\n\t\t\tthis.#options.signal = this.#createManagedSignal();\n\t\t\t// Recreate request with new signal\n\t\t\tthis.request = new globalThis.Request(this.request, {signal: this.#options.signal});\n\t\t}\n\n\t\tconst nonRequestOptions = findUnknownOptions(this.#options);\n\t\tconst retryRequest = this.#options.retry.limit > 0 ? this.request.clone() : undefined;\n\t\tconst request = this.#wrapRequestWithUploadProgress(this.request, this.#options.body ?? undefined);\n\n\t\t// Cloning is done here to prepare in advance for retries.\n\t\t// Skip cloning when retries are disabled - cloning a streaming body calls ReadableStream#tee()\n\t\t// which buffers the entire stream in memory, causing excessive memory usage for large uploads.\n\t\tthis.#originalRequest = request;\n\t\tif (retryRequest) {\n\t\t\tthis.request = retryRequest;\n\t\t}\n\n\t\ttry {\n\t\t\tconst remainingTotal = this.#getRemainingTotalTimeout();\n\t\t\tif (remainingTotal !== undefined && remainingTotal <= 0) {\n\t\t\t\tthrow new TimeoutError(this.request);\n\t\t\t}\n\n\t\t\tconst effectiveTimeout: number | undefined = this.#options.timeout === false\n\t\t\t\t? remainingTotal\n\t\t\t\t: (remainingTotal === undefined\n\t\t\t\t\t? this.#options.timeout\n\t\t\t\t\t: Math.min(this.#options.timeout, remainingTotal));\n\n\t\t\tconst response = effectiveTimeout === undefined\n\t\t\t\t? await this.#options.fetch(request, nonRequestOptions)\n\t\t\t\t: await timeout(request, nonRequestOptions, this.#abortController, {\n\t\t\t\t\ttimeout: effectiveTimeout,\n\t\t\t\t\tfetch: this.#options.fetch,\n\t\t\t\t});\n\n\t\t\treturn this.#setResponseRequest(response, request);\n\t\t} catch (error) {\n\t\t\tif (isRawNetworkError(error)) {\n\t\t\t\tthrow new NetworkError(this.request, {cause: error as Error});\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t#getRemainingTotalTimeout(): number | undefined {\n\t\tif (this.#startTime === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst elapsed = this.#getCurrentTime() - this.#startTime;\n\t\treturn Math.max(0, (this.#options.totalTimeout as number) - elapsed);\n\t}\n\n\t#getCurrentTime(): number {\n\t\treturn globalThis.performance?.now() ?? Date.now();\n\t}\n\n\t#getNormalizedOptions(): NormalizedOptions {\n\t\tif (!this.#cachedNormalizedOptions) {\n\t\t\t// Exclude Ky-specific options that are not part of `RequestInit`.\n\t\t\tconst {\n\t\t\t\thooks,\n\t\t\t\tjson,\n\t\t\t\tparseJson,\n\t\t\t\tstringifyJson,\n\t\t\t\tsearchParams,\n\t\t\t\ttimeout,\n\t\t\t\ttotalTimeout,\n\t\t\t\tthrowHttpErrors,\n\t\t\t\tfetch,\n\t\t\t\t...normalizedOptions\n\t\t\t} = this.#options;\n\n\t\t\tthis.#cachedNormalizedOptions = Object.freeze(normalizedOptions) as NormalizedOptions;\n\t\t}\n\n\t\treturn this.#cachedNormalizedOptions;\n\t}\n\n\t#assignRequest(request: Request): void {\n\t\tthis.#cachedNormalizedOptions = undefined;\n\t\tthis.request = request;\n\t}\n\n\t#getResponseRequest(response: Response): Request {\n\t\treturn this.#responseRequests.get(response) ?? this.request;\n\t}\n\n\t#setResponseRequest(response: Response, request: Request): Response {\n\t\tthis.#responseRequests.set(response, request);\n\t\treturn response;\n\t}\n\n\t#wrapRequestWithUploadProgress(request: Request, originalBody?: BodyInit): Request {\n\t\tif (!this.#options.onUploadProgress || !request.body || !supportsRequestStreams) {\n\t\t\treturn request;\n\t\t}\n\n\t\treturn streamRequest(request, this.#options.onUploadProgress, originalBody ?? this.#options.body ?? undefined);\n\t}\n}\n", "/*! MIT License © Sindre Sorhus */\n\nimport {Ky} from './core/Ky.js';\nimport {requestMethods, stop, retry} from './core/constants.js';\nimport type {KyInstance} from './types/ky.js';\nimport type {Input, Options} from './types/options.js';\nimport {validateAndMerge} from './utils/merge.js';\nimport {type Mutable} from './utils/types.js';\n\nconst createInstance = (defaults?: Partial<Options>): KyInstance => {\n\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\tconst ky: Partial<Mutable<KyInstance>> = (input: Input, options?: Options) => Ky.create(input, validateAndMerge(defaults, options));\n\n\tfor (const method of requestMethods) {\n\t\t// eslint-disable-next-line @typescript-eslint/promise-function-async\n\t\tky[method] = (input: Input, options?: Options) => Ky.create(input, validateAndMerge(defaults, options, {method}));\n\t}\n\n\tky.create = (newDefaults?: Partial<Options>) => createInstance(validateAndMerge(newDefaults));\n\tky.extend = (newDefaults?: Partial<Options> | ((parentDefaults: Partial<Options>) => Partial<Options>)) => {\n\t\tif (typeof newDefaults === 'function') {\n\t\t\tnewDefaults = newDefaults(defaults ?? {});\n\t\t}\n\n\t\treturn createInstance(validateAndMerge(defaults, newDefaults));\n\t};\n\n\tky.stop = stop;\n\tky.retry = retry;\n\n\treturn ky as KyInstance;\n};\n\nconst ky = createInstance();\n\nexport default ky;\n\nexport type {KyInstance} from './types/ky.js';\n\nexport type {\n\tInput,\n\tOptions,\n\tNormalizedOptions,\n\tRetryOptions,\n\tShouldRetryState,\n\tSearchParamsOption,\n\tProgress,\n} from './types/options.js';\n\nexport type {\n\tHooks,\n\tInitHook,\n\tBeforeRequestHook,\n\tBeforeRequestState,\n\tBeforeRetryHook,\n\tBeforeRetryState,\n\tBeforeErrorHook,\n\tBeforeErrorState,\n\tAfterResponseHook,\n\tAfterResponseState,\n} from './types/hooks.js';\n\nexport type {ResponsePromise} from './types/ResponsePromise.js';\nexport type {\n\tStandardSchemaV1,\n\tStandardSchemaV1InferOutput,\n\tStandardSchemaV1Issue,\n} from './types/standard-schema.js';\nexport type {KyRequest} from './types/request.js';\nexport type {KyResponse} from './types/response.js';\nexport {KyError} from './errors/KyError.js';\nexport {HTTPError} from './errors/HTTPError.js';\nexport {SchemaValidationError} from './errors/SchemaValidationError.js';\nexport {NetworkError} from './errors/NetworkError.js';\nexport {TimeoutError} from './errors/TimeoutError.js';\nexport {ForceRetryError} from './errors/ForceRetryError.js';\nexport {\n\tisKyError,\n\tisHTTPError,\n\tisNetworkError,\n\tisTimeoutError,\n\tisForceRetryError,\n} from './utils/type-guards.js';\nexport {replaceOption} from './utils/merge.js';\n\n// Intentionally not exporting this for now as it's just an implementation detail and we don't want to commit to a certain API yet at least.\n// export {NonError} from './errors/NonError.js';\n", "import ky from 'ky';\r\n\r\nimport { app } from './globals';\r\nimport type {\r\n AccountSettings,\r\n Bookmark,\r\n BulkEditRequest,\r\n BulkEditResponse,\r\n Note,\r\n NoteBulkEditRequest,\r\n TagCloud,\r\n TagCloudMode,\r\n TagSuggestionRequest,\r\n TagSuggestionResponse,\r\n} from './types';\r\n\r\nexport type StarAction = 'star' | 'unstar';\r\n\r\nfunction withCsrf(headers?: HeadersInit): HeadersInit {\r\n const a = app();\r\n const h = new Headers(headers);\r\n h.set(a.csrfHeaderName, a.csrfToken);\r\n return h;\r\n}\r\n\r\n// Paths below are relative to the document's `<base href>` (set by the server to the\r\n// approot), so they resolve correctly regardless of the current page's URL depth or\r\n// whether the app is served from a subpath.\r\nasync function request(\r\n method: string,\r\n path: string,\r\n opts: { headers?: HeadersInit; body?: BodyInit | null; timeout?: number | false } = {},\r\n) {\r\n const res = await ky(path, {\r\n method,\r\n headers: withCsrf(opts.headers),\r\n body: opts.body ?? undefined,\r\n throwHttpErrors: false,\r\n timeout: opts.timeout,\r\n });\r\n return res;\r\n}\r\n\r\nexport async function toggleStar(\r\n bid: number,\r\n action: StarAction,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('PATCH', `api/bm/${bid.toString()}/${action}`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function markRead(\r\n bid: number,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('PATCH', `api/bm/${bid.toString()}/read`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function destroy(\r\n bid: number,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('DELETE', `api/bm/${bid.toString()}`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function bulkEdit(req: BulkEditRequest): Promise<BulkEditResponse> {\r\n return bulkEditPost('api/bm/bulk', req);\r\n}\r\n\r\nexport async function noteBulkEdit(req: NoteBulkEditRequest): Promise<BulkEditResponse> {\r\n return bulkEditPost('api/note/bulk', req);\r\n}\r\n\r\nasync function bulkEditPost(\r\n path: string,\r\n req: BulkEditRequest | NoteBulkEditRequest,\r\n): Promise<BulkEditResponse> {\r\n const res = await request('POST', path, {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(req),\r\n timeout: 300_000,\r\n });\r\n const contentType = res.headers.get('content-type') ?? '';\r\n let bodyText: string | undefined;\r\n let data: { editedCount: number } | undefined;\r\n if (contentType.includes('application/json')) {\r\n try {\r\n data = await res.json();\r\n } catch {\r\n data = undefined;\r\n }\r\n } else {\r\n bodyText = await res.text();\r\n }\r\n return { ok: res.ok, status: res.status, bodyText, data };\r\n}\r\n\r\nexport async function archiveBookmark(\r\n bid: number,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('POST', `api/bm/${bid.toString()}/archive`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function editBookmark(\r\n bm: Bookmark,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('POST', 'api/add', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(bm),\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function editNote(\r\n note: Note,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('POST', 'api/note/add', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(note),\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function lookupTitle(bm: Bookmark): Promise<string | null> {\r\n const res = await request('POST', 'api/lookuptitle', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(bm),\r\n });\r\n if (res.status === 200) return await res.text();\r\n return null;\r\n}\r\n\r\nexport async function getTagCloud(mode: TagCloudMode): Promise<TagCloud | null> {\r\n const tagCloudR = app().tagCloudR;\r\n if (!tagCloudR) return null;\r\n const res = await request('POST', tagCloudR, {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(mode),\r\n });\r\n if (!res.ok) return null;\r\n try {\r\n return await res.json();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function updateTagCloudMode(mode: TagCloudMode): Promise<void> {\r\n await request('POST', 'api/tagcloudmode', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(mode),\r\n });\r\n}\r\n\r\nexport async function fetchTagSuggestions(\r\n data: TagSuggestionRequest,\r\n): Promise<TagSuggestionResponse | null> {\r\n const res = await request('POST', 'api/tagSuggestions', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(data),\r\n });\r\n if (!res.ok) return null;\r\n try {\r\n return await res.json<TagSuggestionResponse>();\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport async function destroyNote(\r\n nid: number,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('DELETE', `api/note/${nid.toString()}`, {\r\n headers: { 'content-type': 'application/x-www-form-urlencoded' },\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function editAccountSettings(\r\n us: AccountSettings,\r\n): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('POST', 'api/accountSettings', {\r\n headers: { 'content-type': 'application/json' },\r\n body: JSON.stringify(us),\r\n });\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function resetApiKey(): Promise<{\r\n ok: boolean;\r\n status: number;\r\n apiKey?: string;\r\n bodyText?: string;\r\n}> {\r\n const res = await request('POST', 'Settings/apikey');\r\n if (res.ok) {\r\n try {\r\n const data = await res.json<{ apiKey: string }>();\r\n return { ok: true, status: res.status, apiKey: data.apiKey };\r\n } catch {\r\n return { ok: true, status: res.status };\r\n }\r\n }\r\n return { ok: false, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport async function revokeApiKey(): Promise<{ ok: boolean; status: number; bodyText: string }> {\r\n const res = await request('DELETE', 'Settings/apikey');\r\n return { ok: res.ok, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\n// Paths relative to the document's `<base href>` (the approot). Exports are plain\r\n// authenticated GET downloads; anchors point at these directly.\r\nexport const exportPaths = {\r\n bookmarksJson: 'Settings/export/bookmarks/json',\r\n bookmarksHtml: 'Settings/export/bookmarks/netscape',\r\n notesJson: 'Settings/export/notes/json',\r\n} as const;\r\n\r\nexport type ImportResult = {\r\n ok: boolean;\r\n status: number;\r\n imported?: number;\r\n bodyText?: string;\r\n};\r\n\r\nasync function importFile(path: string, contentType: string, body: string): Promise<ImportResult> {\r\n const res = await request('POST', path, {\r\n headers: { 'content-type': contentType },\r\n body,\r\n timeout: 300_000,\r\n });\r\n if (res.ok) {\r\n try {\r\n const data = await res.json<{ imported: number }>();\r\n return { ok: true, status: res.status, imported: data.imported };\r\n } catch {\r\n return { ok: true, status: res.status };\r\n }\r\n }\r\n return { ok: false, status: res.status, bodyText: await res.text() };\r\n}\r\n\r\nexport const importBookmarks = (text: string): Promise<ImportResult> =>\r\n importFile('Settings/import/bookmarks/json', 'application/json', text);\r\n\r\nexport const importFirefox = (text: string): Promise<ImportResult> =>\r\n importFile('Settings/import/bookmarks/firefox', 'application/json', text);\r\n\r\nexport const importNetscape = (text: string): Promise<ImportResult> =>\r\n importFile('Settings/import/bookmarks/netscape', 'text/plain', text);\r\n\r\nexport const importNotes = (jsonArray: string): Promise<ImportResult> =>\r\n importFile('Settings/import/notes/json', 'application/json', jsonArray);\r\n\r\nexport async function logout(): Promise<void> {\r\n const a = app();\r\n await request('POST', a.authRlogoutR);\r\n window.location.reload();\r\n}\r\n", "import { TimeoutError } from 'ky';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport * as api from '../api';\r\nimport { editAccountSettings } from '../api';\r\nimport type { AccountSettings } from '../types';\r\nimport { apiErrorMsg } from '../util';\r\n\r\ntype SettingsTab = 'account' | 'importexport' | 'api';\r\n\r\n// Resolved against the document's `<base href>` (the approot), so the tab URLs keep\r\n// the subpath when the app is served from a non-root APPROOT.\r\nconst tabPaths: Record<SettingsTab, string> = {\r\n account: 'Settings',\r\n importexport: 'Settings/importexport',\r\n api: 'Settings/api',\r\n};\r\n\r\nfunction tabHref(value: SettingsTab): string {\r\n return new URL(tabPaths[value], document.baseURI).pathname;\r\n}\r\n\r\nfunction tabFromLocation(): SettingsTab {\r\n const pathname = window.location.pathname;\r\n if (pathname === tabHref('importexport')) return 'importexport';\r\n if (pathname === tabHref('api')) return 'api';\r\n return 'account';\r\n}\r\n\r\n/** Displays and edits the current user's account settings, with a sub-nav to import/export. */\r\nexport function AccountSettingsView({ initial }: { initial: AccountSettings }) {\r\n const { t } = useTranslation();\r\n const [tab, setTab] = React.useState<SettingsTab>(tabFromLocation);\r\n\r\n React.useEffect(() => {\r\n const onPopState = () => {\r\n setTab(tabFromLocation());\r\n };\r\n window.addEventListener('popstate', onPopState);\r\n return () => {\r\n window.removeEventListener('popstate', onPopState);\r\n };\r\n }, []);\r\n\r\n function tabLink(value: SettingsTab, label: string) {\r\n return (\r\n <a\r\n href={tabHref(value)}\r\n className={`dib link${tab === value ? ' nav-active' : ' silver hover-alt'}`}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n if (window.location.pathname !== tabHref(value)) {\r\n window.history.pushState(null, '', tabHref(value));\r\n }\r\n setTab(value);\r\n }}\r\n >\r\n {label}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <div>\r\n <div className=\"mb3\">\r\n {tabLink('account', t('settings.tabAccount'))}\r\n {' \u2027 '}\r\n {tabLink('importexport', t('settings.tabImportExport'))}\r\n {' \u2027 '}\r\n {tabLink('api', t('settings.tabApi'))}\r\n </div>\r\n\r\n <div className={tab === 'account' ? '' : 'dn'}>\r\n <SettingsView initial={initial} />\r\n </div>\r\n <div className={tab === 'importexport' ? '' : 'dn'}>\r\n <ImportExportView />\r\n </div>\r\n <div className={tab === 'api' ? '' : 'dn'}>\r\n <ApiKeyView initialHasApiKey={initial.hasApiKey} />\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction SettingsView({ initial }: { initial: AccountSettings }) {\r\n const { t } = useTranslation();\r\n const [us, setUs] = React.useState<AccountSettings>(initial);\r\n const [apiError, setApiError] = React.useState<string | null>(null);\r\n const archiveDisabled = !us.archiveBackendEnabled;\r\n const archiveDisabledTitle = archiveDisabled ? t('settings.archivingDisabled') : undefined;\r\n\r\n async function update(next: AccountSettings): Promise<boolean> {\r\n try {\r\n const res = await editAccountSettings(next);\r\n if (!res.ok) {\r\n setApiError(apiErrorMsg(t, res.status, res.bodyText));\r\n return false;\r\n }\r\n setApiError(null);\r\n setUs(next);\r\n const lockIcon = document.getElementById('privacy-lock-icon');\r\n if (lockIcon) lockIcon.style.display = next.privacyLock ? '' : 'none';\r\n return true;\r\n } catch (err) {\r\n setApiError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"settings-form\">\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.groupLanguage')}</div>\r\n <div className=\"flex items-center mb3\">\r\n <select\r\n id=\"language\"\r\n name=\"language\"\r\n className=\"pointer\"\r\n aria-label={t('settings.language')}\r\n value={us.language ?? ''}\r\n onChange={(e) => {\r\n const next = { ...us, language: e.target.value === '' ? null : e.target.value };\r\n void update(next).then((ok) => {\r\n if (ok) window.location.reload();\r\n });\r\n }}\r\n >\r\n <option value=\"\">{t('settings.serverDefault')}</option>\r\n <option value=\"en\">English</option>\r\n <option value=\"de\">Deutsch</option>\r\n <option value=\"es\">Espa\u00F1ol</option>\r\n <option value=\"fr\">Fran\u00E7ais</option>\r\n <option value=\"it\">Italiano</option>\r\n <option value=\"ja\">\u65E5\u672C\u8A9E</option>\r\n <option value=\"ko\">\uD55C\uAD6D\uC5B4</option>\r\n <option value=\"pl\">Polski</option>\r\n <option value=\"pt-BR\">Portugu\u00EAs (Brasil)</option>\r\n <option value=\"ru\">\u0420\u0443\u0441\u0441\u043A\u0438\u0439</option>\r\n <option value=\"tr\">T\u00FCrk\u00E7e</option>\r\n <option value=\"uk\">\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430</option>\r\n <option value=\"zh-Hans\">\u7B80\u4F53\u4E2D\u6587</option>\r\n <option value=\"zh-Hant\">\u7E41\u9AD4\u4E2D\u6587</option>\r\n </select>\r\n </div>\r\n\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.groupGeneral')}</div>\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"suggestTags\"\r\n name=\"suggestTags\"\r\n checked={us.suggestTags}\r\n onChange={(e) => void update({ ...us, suggestTags: e.target.checked })}\r\n />\r\n <label htmlFor=\"suggestTags\" className=\"lh-copy\">\r\n {t('settings.suggestTags')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"suggestTagsUseReturnKey\"\r\n name=\"suggestTagsUseReturnKey\"\r\n checked={us.suggestTagsUseReturnKey}\r\n onChange={(e) => void update({ ...us, suggestTagsUseReturnKey: e.target.checked })}\r\n />\r\n <label htmlFor=\"suggestTagsUseReturnKey\" className=\"lh-copy\">\r\n {t('settings.suggestTagsUseReturnKey')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"flex items-center mb3\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"previewNotes\"\r\n name=\"previewNotes\"\r\n checked={us.previewNotes}\r\n onChange={(e) => void update({ ...us, previewNotes: e.target.checked })}\r\n />\r\n <label htmlFor=\"previewNotes\" className=\"lh-copy\">\r\n {t('settings.previewNotes')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.groupArchive')}</div>\r\n <div\r\n className={`flex items-center mb3${archiveDisabled ? ' o-50' : ''}`}\r\n title={archiveDisabledTitle}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n className={`mr2${archiveDisabled ? '' : ' pointer'}`}\r\n id=\"archiveDefault\"\r\n name=\"archiveDefault\"\r\n checked={us.archiveDefault}\r\n disabled={archiveDisabled}\r\n title={archiveDisabledTitle}\r\n onChange={(e) => void update({ ...us, archiveDefault: e.target.checked })}\r\n />\r\n <label\r\n htmlFor=\"archiveDefault\"\r\n className={`lh-copy${archiveDisabled ? ' thm-text-tertiary' : ''}`}\r\n title={archiveDisabledTitle}\r\n >\r\n {t('settings.archiveDefault')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.groupPrivacy')}</div>\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"privateDefault\"\r\n name=\"privateDefault\"\r\n checked={us.privateDefault}\r\n onChange={(e) => void update({ ...us, privateDefault: e.target.checked })}\r\n />\r\n <label htmlFor=\"privateDefault\" className=\"lh-copy\">\r\n {t('settings.privateDefault')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"publicTagCloud\"\r\n name=\"publicTagCloud\"\r\n checked={us.publicTagCloud}\r\n onChange={(e) => void update({ ...us, publicTagCloud: e.target.checked })}\r\n />\r\n <label htmlFor=\"publicTagCloud\" className=\"lh-copy\">\r\n {t('settings.publicTagCloud')}\r\n </label>\r\n </div>\r\n\r\n <div className=\"flex items-center mb2\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"pointer mr2\"\r\n id=\"privacyLock\"\r\n name=\"privacyLock\"\r\n checked={us.privacyLock}\r\n onChange={(e) => void update({ ...us, privacyLock: e.target.checked })}\r\n />\r\n <label htmlFor=\"privacyLock\" className=\"lh-copy\">\r\n {t('settings.privacyLock')}\r\n </label>\r\n </div>\r\n\r\n {apiError ? <div className=\"thm-text-error f7 mt2\">{apiError}</div> : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction ImportExportView() {\r\n const { t } = useTranslation();\r\n const [status, setStatus] = React.useState<string | null>(null);\r\n const [error, setError] = React.useState<string | null>(null);\r\n const [busy, setBusy] = React.useState(false);\r\n\r\n async function runImport(\r\n files: FileList | null,\r\n prepare: (texts: string[]) => string,\r\n importFn: (body: string) => Promise<api.ImportResult>,\r\n ): Promise<void> {\r\n if (!files || files.length === 0) return;\r\n setError(null);\r\n setStatus(t('settings.importing'));\r\n setBusy(true);\r\n try {\r\n const texts = await Promise.all(Array.from(files).map((f) => f.text()));\r\n let body: string;\r\n try {\r\n body = prepare(texts);\r\n } catch {\r\n setStatus(null);\r\n setError(t('settings.importParseError'));\r\n return;\r\n }\r\n const res = await importFn(body);\r\n if (res.ok) {\r\n setStatus(t('settings.imported', { count: res.imported ?? 0 }));\r\n } else {\r\n setStatus(null);\r\n setError(t('error.error', { status: res.status }));\r\n }\r\n } catch (err) {\r\n setStatus(null);\r\n setError(err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'));\r\n } finally {\r\n setBusy(false);\r\n }\r\n }\r\n\r\n const first = (texts: string[]) => texts[0] ?? '';\r\n const combineNotes = (texts: string[]) => {\r\n const notes: unknown[] = [];\r\n for (const txt of texts) {\r\n const parsed: unknown = JSON.parse(txt);\r\n if (Array.isArray(parsed)) notes.push(...(parsed as unknown[]));\r\n else notes.push(parsed);\r\n }\r\n return JSON.stringify(notes);\r\n };\r\n\r\n function importRow(\r\n label: string,\r\n accept: string,\r\n prepare: (texts: string[]) => string,\r\n importFn: (body: string) => Promise<api.ImportResult>,\r\n multiple = false,\r\n ) {\r\n return (\r\n <div className=\"mb2\">\r\n <div className=\"mb1\">{label}</div>\r\n <input\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n disabled={busy}\r\n className=\"f7 pointer\"\r\n onChange={(e) => {\r\n void runImport(e.target.files, prepare, importFn);\r\n e.target.value = '';\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"settings-form\">\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.export')}</div>\r\n <div className=\"mb1\">\r\n <a className=\"link\" href={api.exportPaths.bookmarksJson} download>\r\n {t('settings.exportBookmarksJson')}\r\n </a>\r\n </div>\r\n <div className=\"mb1\">\r\n <a className=\"link\" href={api.exportPaths.bookmarksHtml} download>\r\n {t('settings.exportBookmarksHtml')}\r\n </a>\r\n </div>\r\n <div className=\"mb3\">\r\n <a className=\"link\" href={api.exportPaths.notesJson} download>\r\n {t('settings.exportNotesJson')}\r\n </a>\r\n </div>\r\n\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.import')}</div>\r\n {importRow(t('settings.importBookmarksJson'), '.json', first, api.importBookmarks)}\r\n {importRow(t('settings.importFirefoxJson'), '.json', first, api.importFirefox)}\r\n {importRow(t('settings.importNetscapeHtml'), '.html,.htm', first, api.importNetscape)}\r\n {importRow(t('settings.importNotesJson'), '.json', combineNotes, api.importNotes, true)}\r\n\r\n {status ? <div className=\"f7 mt2\">{status}</div> : null}\r\n {error ? <div className=\"thm-text-error f7 mt2\">{error}</div> : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction ApiKeyView({ initialHasApiKey }: { initialHasApiKey: boolean }) {\r\n const { t } = useTranslation();\r\n const [hasApiKey, setHasApiKey] = React.useState(initialHasApiKey);\r\n const [newKey, setNewKey] = React.useState<string | null>(null);\r\n const [copied, setCopied] = React.useState(false);\r\n const [error, setError] = React.useState<string | null>(null);\r\n const [busy, setBusy] = React.useState(false);\r\n\r\n async function reset(): Promise<void> {\r\n setError(null);\r\n setCopied(false);\r\n setBusy(true);\r\n try {\r\n const res = await api.resetApiKey();\r\n if (res.ok && res.apiKey) {\r\n setNewKey(res.apiKey);\r\n setHasApiKey(true);\r\n } else {\r\n setError(apiErrorMsg(t, res.status, res.bodyText ?? ''));\r\n }\r\n } catch (err) {\r\n setError(err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'));\r\n } finally {\r\n setBusy(false);\r\n }\r\n }\r\n\r\n async function revoke(): Promise<void> {\r\n setError(null);\r\n setBusy(true);\r\n try {\r\n const res = await api.revokeApiKey();\r\n if (res.ok) {\r\n setHasApiKey(false);\r\n setNewKey(null);\r\n } else {\r\n setError(apiErrorMsg(t, res.status, res.bodyText));\r\n }\r\n } catch (err) {\r\n setError(err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'));\r\n } finally {\r\n setBusy(false);\r\n }\r\n }\r\n\r\n async function copyKey(): Promise<void> {\r\n if (!newKey) return;\r\n try {\r\n await navigator.clipboard.writeText(newKey);\r\n setCopied(true);\r\n } catch {\r\n setCopied(false);\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"settings-form\">\r\n <div className=\"f7 fw7 ttu tracked thm-text-tertiary mb2\">{t('settings.apiKeyTitle')}</div>\r\n <div className=\"mb3 lh-copy\">\r\n {hasApiKey ? t('settings.apiKeyHasKey') : t('settings.apiKeyNoKey')}\r\n </div>\r\n\r\n {newKey ? (\r\n <div className=\"mb3\">\r\n <div className=\"mb1 lh-copy\">{t('settings.apiKeyShownOnce')}</div>\r\n <div className=\"flex items-center\">\r\n <input\r\n type=\"text\"\r\n readOnly\r\n className=\"code f7 pa2 ba thm-border-primary bg-transparent thm-text-strong w-100 mw6\"\r\n value={newKey}\r\n onFocus={(e) => {\r\n e.target.select();\r\n }}\r\n />\r\n <a\r\n href=\"#\"\r\n className=\"link ml2\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n void copyKey();\r\n }}\r\n >\r\n {copied ? t('settings.apiKeyCopied') : t('settings.apiKeyCopy')}\r\n </a>\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n <div className=\"flex items-center\">\r\n <button\r\n type=\"button\"\r\n disabled={busy}\r\n className=\"ph3 pv2 input-reset thm-text-strong ba thm-border-primary bg-transparent pointer f6 dib dim\"\r\n onClick={() => void reset()}\r\n >\r\n {hasApiKey ? t('settings.apiKeyReset') : t('settings.apiKeyCreate')}\r\n </button>\r\n {hasApiKey ? (\r\n <button\r\n type=\"button\"\r\n disabled={busy}\r\n className=\"ml3 input-reset bn bg-transparent thm-text-error pointer f6 dib dim\"\r\n onClick={() => void revoke()}\r\n >\r\n {t('settings.apiKeyRevoke')}\r\n </button>\r\n ) : null}\r\n </div>\r\n\r\n {hasApiKey ? (\r\n <div className=\"f7 thm-text-tertiary mt2 lh-copy\">{t('settings.apiKeyResetHint')}</div>\r\n ) : null}\r\n\r\n {error ? <div className=\"thm-text-error f7 mt2\">{error}</div> : null}\r\n </div>\r\n );\r\n}\r\n", "import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { destroy, editBookmark, lookupTitle } from '../api';\r\nimport { app, closeWindow, fromNow, shdatetime } from '../globals';\r\nimport { useTagSuggestions } from '../hooks/useTagSuggestions';\r\nimport type { Bookmark } from '../types';\r\nimport { curQuerystring, lookupQueryStringValue, normalizeTags } from '../util';\r\nimport { TagSuggestionsDropdown } from './TagSuggestionsDropdown';\r\n\r\n/** Form for adding or editing a single bookmark, used in the popup window. */\r\nexport function AddForm({ initial }: { initial: Bookmark }) {\r\n const { t } = useTranslation();\r\n const a = app();\r\n const [bm, setBm] = React.useState<Bookmark>(initial);\r\n const [editBm, setEditBm] = React.useState<Bookmark>(initial);\r\n const [deleteAsk, setDeleteAsk] = React.useState(false);\r\n const [loading, setLoading] = React.useState(false);\r\n const [destroyed, setDestroyed] = React.useState(false);\r\n const [apiError, setApiError] = React.useState<string | null>(null);\r\n const suggestEnabled = a.dat.suggestTags === true;\r\n const suggestUseReturnKey = a.dat.suggestTagsUseReturnKey !== false;\r\n const fromNowVal = React.useMemo(() => fromNow(a.lang, bm.time), [a.lang, bm.time]);\r\n\r\n const {\r\n tagInputRef,\r\n suggestionState,\r\n closeSuggestions,\r\n onTagsChange,\r\n onTagsKeyDown,\r\n onTagsSelect,\r\n onSuggestionHover,\r\n onSuggestionPick,\r\n } = useTagSuggestions({\r\n enabled: suggestEnabled,\r\n useReturnKey: suggestUseReturnKey,\r\n tags: editBm.tags,\r\n maxSuggestions: 4,\r\n onTagsUpdate: (tags) => {\r\n setEditBm((x) => ({ ...x, tags }));\r\n },\r\n });\r\n\r\n async function onFetchTitle() {\r\n setLoading(true);\r\n try {\r\n const title = await lookupTitle(editBm);\r\n if (title != null) setEditBm((x) => ({ ...x, title }));\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function onDestroy() {\r\n const res = await destroy(bm.bid);\r\n if (!res.ok) {\r\n setApiError(res.bodyText);\r\n return;\r\n }\r\n setDestroyed(true);\r\n }\r\n\r\n const onSubmit = async (e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>): Promise<void> => {\r\n e.preventDefault();\r\n setApiError(null);\r\n const editBm2 = { ...editBm, tags: normalizeTags(editBm.tags) };\r\n\r\n const res = await editBookmark(editBm2);\r\n if (res.ok && res.status >= 200 && res.status < 300) {\r\n setBm(editBm2);\r\n\r\n const qs = curQuerystring();\r\n const next = lookupQueryStringValue(qs, 'next');\r\n const ref = document.referrer;\r\n const org = window.location.origin;\r\n\r\n if (next === 'closeWindow') closeWindow(window);\r\n else if (next === 'back') {\r\n if (ref.startsWith(org)) window.location.href = ref;\r\n else window.location.href = org;\r\n } else {\r\n closeWindow(window);\r\n }\r\n } else {\r\n setApiError(res.bodyText);\r\n }\r\n };\r\n\r\n if (destroyed) return <p className=\"thm-text-killed\">{t('addForm.killed')}</p>;\r\n\r\n return (\r\n <form\r\n onSubmit={(e) => {\r\n void onSubmit(e);\r\n }}\r\n >\r\n <table className=\"w-100\">\r\n <tbody>\r\n <tr>\r\n <td className=\"w1\" />\r\n <td>\r\n {bm.bid > 0 ? (\r\n <div className=\"alert\">\r\n {t('addForm.previouslySaved')} \r\n <span\r\n className=\"link f7 dib thm-text-tertiary thm-hover-link-color pr3\"\r\n data-time={bm.time}\r\n title={shdatetime(a.lang, bm.time)}\r\n >\r\n {fromNowVal}\r\n </span>\r\n <div className=\"edit_links dib ml1\">\r\n <div className=\"delete_link di\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(true);\r\n }}\r\n className=\"delete\"\r\n hidden={deleteAsk}\r\n >\r\n {t('delete')}\r\n </button>\r\n <span className=\"confirm thm-text-error\" hidden={!deleteAsk}>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(false);\r\n }}\r\n >\r\n {t('cancel')} / \r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => void onDestroy()}\r\n className=\"thm-text-error\"\r\n >\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n ) : null}\r\n {apiError ? <div className=\"alert alert-err\">{apiError}</div> : null}\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"url\">{t('addForm.url')}</label>\r\n </td>\r\n <td>\r\n <input\r\n type=\"url\"\r\n id=\"url\"\r\n className=\"w-100 mv1\"\r\n required\r\n name=\"url\"\r\n autoFocus={bm.url === ''}\r\n value={editBm.url}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, url: e.target.value }));\r\n }}\r\n />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"title\">{t('bmark.title')}</label>\r\n </td>\r\n <td className=\"flex\">\r\n <input\r\n type=\"text\"\r\n id=\"title\"\r\n className=\"w-100 mv1 flex-auto\"\r\n name=\"title\"\r\n value={editBm.title}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, title: e.target.value }));\r\n }}\r\n />\r\n <button\r\n disabled={loading}\r\n type=\"button\"\r\n onClick={() => void onFetchTitle()}\r\n className={`ml2 input-reset ba thm-border-primary pointer f6 di dim pa1 ma1 mr0${loading ? ' thm-bg-disabled' : ''}`}\r\n >\r\n {t('fetch')}\r\n </button>\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"description\">{t('bmark.description')}</label>\r\n </td>\r\n <td>\r\n <textarea\r\n className=\"w-100 mt1 thm-text-secondary\"\r\n id=\"description\"\r\n name=\"description\"\r\n rows={4}\r\n value={editBm.description}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, description: e.target.value }));\r\n }}\r\n />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"tags\">{t('bmark.tags')}</label>\r\n </td>\r\n <td>\r\n <div className=\"relative\">\r\n <input\r\n ref={tagInputRef}\r\n type=\"text\"\r\n id=\"tags\"\r\n className=\"w-100 mv1\"\r\n name=\"tags\"\r\n autoComplete=\"off\"\r\n autoCapitalize=\"off\"\r\n autoFocus={bm.url !== ''}\r\n value={editBm.tags}\r\n onChange={onTagsChange}\r\n onKeyDown={onTagsKeyDown}\r\n onClick={onTagsSelect}\r\n onSelect={onTagsSelect}\r\n onBlur={() => {\r\n window.setTimeout(() => {\r\n closeSuggestions();\r\n }, 0);\r\n }}\r\n />\r\n {suggestionState != null ? (\r\n <TagSuggestionsDropdown\r\n suggestionState={suggestionState}\r\n onHover={onSuggestionHover}\r\n onPick={onSuggestionPick}\r\n />\r\n ) : null}\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"private\">{t('bmark.private')}</label>\r\n </td>\r\n <td>\r\n <div className=\"mr4 dib\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"private\"\r\n className=\"private pointer\"\r\n name=\"private\"\r\n checked={editBm.private}\r\n onChange={(e) => {\r\n setEditBm((x) => ({\r\n ...x,\r\n private: e.target.checked,\r\n ...(a.dat.archiveBackendEnabled && editBm.archiveRequested && e.target.checked\r\n ? { archiveRequested: false }\r\n : {}),\r\n }));\r\n }}\r\n />\r\n </div>\r\n {!(bm.bid > 0) && a.dat.archiveBackendEnabled ? (\r\n <div\r\n className={`dib ${editBm.private ? 'o-50' : ''}`}\r\n title={editBm.private ? t('addForm.archiveUnavailable') : undefined}\r\n >\r\n <label className=\"mr2 di\" htmlFor=\"archiveRequested\">\r\n {t('archive')}\r\n </label>\r\n <input\r\n type=\"checkbox\"\r\n id=\"archiveRequested\"\r\n className=\"archive pointer ml2\"\r\n name=\"archiveRequested\"\r\n disabled={editBm.private}\r\n checked={editBm.archiveRequested ?? false}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, archiveRequested: e.target.checked }));\r\n }}\r\n />\r\n </div>\r\n ) : null}\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td>\r\n <label htmlFor=\"toread\">{t('addForm.readLater')}</label>\r\n </td>\r\n <td>\r\n <input\r\n type=\"checkbox\"\r\n id=\"toread\"\r\n className=\"toread pointer\"\r\n name=\"toread\"\r\n checked={editBm.toread}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, toread: e.target.checked }));\r\n }}\r\n />\r\n </td>\r\n </tr>\r\n\r\n <tr>\r\n <td />\r\n <td>\r\n <input\r\n type=\"submit\"\r\n className=\"ph3 pv2 input-reset thm-text-strong ba thm-border-primary bg-transparent pointer f6 dib mt1 dim\"\r\n value={bm.bid > 0 ? t('addForm.update') : t('addForm.add')}\r\n />\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </form>\r\n );\r\n}\r\n", "import React from 'react';\n\nimport { fetchTagSuggestions } from '../api';\nimport type { TagSuggestionRequest, TSuggestion } from '../types';\n\nexport type SuggestionState = {\n items: TSuggestion[];\n selectedIndex: number;\n tokenRange: TagTokenRange;\n anchorLeft: number;\n anchorTop: number;\n};\n\ntype TagTokenRange = {\n token: string;\n start: number;\n end: number;\n};\n\nconst TAG_SUGGESTION_DEBOUNCE_MS = 180;\n\nexport function useTagSuggestions({\n enabled,\n useReturnKey = true,\n tags,\n onTagsUpdate,\n maxSuggestions = 10,\n}: {\n enabled: boolean;\n useReturnKey?: boolean;\n tags: string;\n onTagsUpdate: (next: string) => void;\n maxSuggestions?: number;\n}) {\n const [suggestionState, setSuggestionState] = React.useState<SuggestionState | null>(null);\n const tagSuggestionRequestId = React.useRef(0);\n const tagSuggestionDebounceRef = React.useRef<number | null>(null);\n const tagInputRef = React.useRef<HTMLInputElement | null>(null);\n\n const cancelPendingSuggestions = React.useCallback(() => {\n if (tagSuggestionDebounceRef.current != null) {\n window.clearTimeout(tagSuggestionDebounceRef.current);\n tagSuggestionDebounceRef.current = null;\n }\n tagSuggestionRequestId.current += 1;\n }, []);\n\n const closeSuggestions = React.useCallback(() => {\n cancelPendingSuggestions();\n setSuggestionState(null);\n }, [cancelPendingSuggestions]);\n\n React.useEffect(() => {\n return () => {\n cancelPendingSuggestions();\n };\n }, [cancelPendingSuggestions]);\n\n React.useEffect(() => {\n if (!enabled) closeSuggestions();\n }, [enabled, closeSuggestions]);\n\n const onTagsChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value, selectionStart, selectionEnd } = e.target;\n\n onTagsUpdate(value);\n\n if (!enabled) {\n closeSuggestions();\n return;\n }\n\n if (selectionStart == null || selectionEnd == null || selectionStart !== selectionEnd) {\n closeSuggestions();\n return;\n }\n\n if (isWhitespaceOnlyEdit(tags, value)) {\n closeSuggestions();\n return;\n }\n\n const activeToken = getActiveTagToken(value, selectionStart);\n if (activeToken == null || activeToken.token.length < 2) {\n closeSuggestions();\n return;\n }\n\n const normalizedTagTerms = getNormalizedTagTerms(value);\n const activeTokenNormalized = activeToken.token.toLowerCase();\n const activeTokenOccurrences = normalizedTagTerms.filter(\n (tag) => tag === activeTokenNormalized,\n ).length;\n const shouldExcludeActiveToken = activeTokenOccurrences > 1;\n const payload: TagSuggestionRequest = {\n query: activeToken.token,\n currentTags: Array.from(\n new Set(\n normalizedTagTerms.filter(\n (tag) => shouldExcludeActiveToken || tag !== activeTokenNormalized,\n ),\n ),\n ),\n };\n\n cancelPendingSuggestions();\n tagSuggestionDebounceRef.current = window.setTimeout(() => {\n const requestId = tagSuggestionRequestId.current + 1;\n tagSuggestionRequestId.current = requestId;\n\n void (async () => {\n const response = await fetchTagSuggestions(payload);\n\n if (\n requestId !== tagSuggestionRequestId.current ||\n response == null ||\n tagInputRef.current == null\n ) {\n return;\n }\n\n const items = response.suggestions.slice(0, maxSuggestions);\n if (items.length === 0) {\n closeSuggestions();\n return;\n }\n\n const anchor = measureCaretPosition(tagInputRef.current, selectionStart);\n\n setSuggestionState({\n items,\n selectedIndex: 0,\n tokenRange: activeToken,\n anchorLeft: anchor.left,\n anchorTop: anchor.top,\n });\n })();\n }, TAG_SUGGESTION_DEBOUNCE_MS);\n },\n [cancelPendingSuggestions, closeSuggestions, enabled, maxSuggestions, onTagsUpdate],\n );\n\n const applySuggestion = React.useCallback(\n (term: string) => {\n const input = tagInputRef.current;\n if (input == null || suggestionState == null) return;\n\n const next = replaceTokenAtRange(tags, suggestionState.tokenRange, term);\n onTagsUpdate(next.value);\n closeSuggestions();\n\n requestAnimationFrame(() => {\n input.focus();\n input.setSelectionRange(next.caret, next.caret);\n });\n },\n [closeSuggestions, onTagsUpdate, suggestionState, tags],\n );\n\n const onTagsKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Escape') {\n if (suggestionState != null) {\n e.preventDefault();\n closeSuggestions();\n }\n return;\n }\n\n if (e.key === ' ') {\n closeSuggestions();\n return;\n }\n\n if (suggestionState == null) return;\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setSuggestionState((current) => {\n if (current == null) return current;\n return {\n ...current,\n selectedIndex: (current.selectedIndex + 1) % current.items.length,\n };\n });\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setSuggestionState((current) => {\n if (current == null) return current;\n return {\n ...current,\n selectedIndex:\n (current.selectedIndex - 1 + current.items.length) % current.items.length,\n };\n });\n return;\n }\n\n if (e.key === 'Tab' || (e.key === 'Enter' && useReturnKey)) {\n e.preventDefault();\n const selected = suggestionState.items[suggestionState.selectedIndex];\n applySuggestion(selected.term);\n }\n },\n [applySuggestion, closeSuggestions, suggestionState, useReturnKey],\n );\n\n const onTagsSelect = React.useCallback(\n (e: React.SyntheticEvent<HTMLInputElement>) => {\n if (suggestionState == null) return;\n\n const input = e.currentTarget;\n const { selectionStart, selectionEnd, value } = input;\n if (selectionStart == null || selectionEnd == null || selectionStart !== selectionEnd) {\n closeSuggestions();\n return;\n }\n\n const activeToken = getActiveTagToken(value, selectionStart);\n if (activeToken == null) {\n closeSuggestions();\n return;\n }\n\n if (activeToken.start !== suggestionState.tokenRange.start) {\n closeSuggestions();\n }\n },\n [closeSuggestions, suggestionState],\n );\n\n const onSuggestionHover = React.useCallback((index: number) => {\n setSuggestionState((current) => {\n if (current == null) return current;\n return { ...current, selectedIndex: index };\n });\n }, []);\n\n return {\n tagInputRef,\n suggestionState,\n closeSuggestions,\n onTagsChange,\n onTagsKeyDown,\n onTagsSelect,\n onSuggestionHover,\n onSuggestionPick: applySuggestion,\n };\n}\n\nfunction getActiveTagToken(value: string, caret: number): TagTokenRange | null {\n const boundedCaret = Math.max(0, Math.min(caret, value.length));\n\n let start = boundedCaret;\n while (start > 0 && value[start - 1] !== ' ') {\n start -= 1;\n }\n\n let end = boundedCaret;\n while (end < value.length && value[end] !== ' ') {\n end += 1;\n }\n\n const token = value.slice(start, end).trim();\n return token === '' ? null : { token, start, end };\n}\n\nfunction measureCaretPosition(\n input: HTMLInputElement,\n caret: number,\n): { left: number; top: number } {\n const style = window.getComputedStyle(input);\n const mirror = document.createElement('div');\n mirror.style.position = 'absolute';\n mirror.style.visibility = 'hidden';\n mirror.style.whiteSpace = 'pre';\n mirror.style.top = '0';\n mirror.style.left = '0';\n mirror.style.font = style.font;\n mirror.style.fontKerning = style.fontKerning;\n mirror.style.fontFeatureSettings = style.fontFeatureSettings;\n mirror.style.fontVariantLigatures = style.fontVariantLigatures;\n mirror.style.letterSpacing = style.letterSpacing;\n mirror.style.textTransform = style.textTransform;\n mirror.style.textIndent = style.textIndent;\n mirror.style.boxSizing = style.boxSizing;\n mirror.style.padding = style.padding;\n mirror.style.border = style.border;\n mirror.style.width = `${String(input.clientWidth)}px`;\n\n const prefix = document.createElement('span');\n prefix.textContent = input.value.slice(0, caret);\n mirror.appendChild(prefix);\n\n const marker = document.createElement('span');\n marker.textContent = '\\u200b';\n mirror.appendChild(marker);\n\n document.body.appendChild(mirror);\n const left = marker.offsetLeft - input.scrollLeft + 1;\n const top = marker.offsetTop - input.scrollTop + input.offsetHeight + 4;\n document.body.removeChild(mirror);\n\n return { left, top };\n}\n\nfunction replaceTokenAtRange(\n value: string,\n range: TagTokenRange,\n replacement: string,\n): { value: string; caret: number } {\n const prefix = value.slice(0, range.start);\n // Consume any existing leading space from the suffix so we always own the\n // separator. This lets us unconditionally append a trailing space and place\n // the caret after it, whether the accepted tag is in the middle or at the end.\n const suffix = value.slice(range.end).replace(/^ /, '');\n const inserted = `${replacement} `;\n return {\n value: `${prefix}${inserted}${suffix}`,\n caret: prefix.length + inserted.length,\n };\n}\n\nfunction isWhitespaceOnlyEdit(previous: string, next: string): boolean {\n if (previous === next) return false;\n\n let start = 0;\n while (start < previous.length && start < next.length && previous[start] === next[start]) {\n start += 1;\n }\n\n let prevEnd = previous.length;\n let nextEnd = next.length;\n while (prevEnd > start && nextEnd > start && previous[prevEnd - 1] === next[nextEnd - 1]) {\n prevEnd -= 1;\n nextEnd -= 1;\n }\n\n const removed = previous.slice(start, prevEnd);\n const added = next.slice(start, nextEnd);\n if (removed === '' && added === '') return false;\n return isSpacesOnly(removed) && isSpacesOnly(added);\n}\n\nfunction isSpacesOnly(value: string): boolean {\n return value === '' || /^ *$/.test(value);\n}\n\nfunction getNormalizedTagTerms(value: string): string[] {\n return value\n .split(' ')\n .map((tag) => tag.trim().toLowerCase())\n .filter((tag) => tag !== '');\n}\n", "import React from 'react';\r\n\r\nimport type { SuggestionState } from '../hooks/useTagSuggestions';\r\n\r\nconst MAX_SUGGESTION_TERM_RENDER_LENGTH = 80;\r\n\r\nexport function TagSuggestionsDropdown({\r\n suggestionState,\r\n onHover,\r\n onPick,\r\n}: {\r\n suggestionState: SuggestionState;\r\n onHover: (index: number) => void;\r\n onPick: (term: string) => void;\r\n}) {\r\n return (\r\n <div\r\n className=\"absolute z-5 thm-bg-secondary thm-text-primary ba thm-border-default br2 shadow-4 overflow-hidden f6\"\r\n style={{\r\n left: suggestionState.anchorLeft,\r\n top: suggestionState.anchorTop,\r\n width: 'max-content',\r\n maxWidth: '22rem',\r\n }}\r\n >\r\n {suggestionState.items.map((item, index) => {\r\n const selected = index === suggestionState.selectedIndex;\r\n const displayTerm = truncateSuggestionTerm(item.term);\r\n return (\r\n <button\r\n key={`${item.term}-${item.count.toString()}`}\r\n type=\"button\"\r\n className={`flex items-center justify-between w-100 bn bg-transparent tl ph2 pv1 pointer nowrap thm-text-primary thm-hover-link-color ${selected ? 'thm-bg-selected thm-text-selected' : ''}`}\r\n onMouseEnter={() => {\r\n onHover(index);\r\n }}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n }}\r\n onClick={() => {\r\n onPick(item.term);\r\n }}\r\n title={item.term}\r\n >\r\n <span className=\"mr2\">\r\n {renderHighlightedSuggestion(displayTerm, suggestionState.tokenRange.token)}\r\n </span>\r\n <span className=\"thm-text-tertiary f6 tr\" style={{ minWidth: '3ch' }}>\r\n {item.count}\r\n </span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderHighlightedSuggestion(term: string, query: string): React.ReactNode {\r\n const lowerTerm = term.toLocaleLowerCase();\r\n const lowerQuery = query.toLocaleLowerCase();\r\n const idx = lowerTerm.indexOf(lowerQuery);\r\n if (idx < 0) return term;\r\n\r\n const before = term.slice(0, idx);\r\n const match = term.slice(idx, idx + query.length);\r\n const after = term.slice(idx + query.length);\r\n\r\n return (\r\n <>\r\n {before}\r\n <strong>{match}</strong>\r\n {after}\r\n </>\r\n );\r\n}\r\n\r\nfunction truncateSuggestionTerm(term: string): string {\r\n if (term.length <= MAX_SUGGESTION_TERM_RENDER_LENGTH) return term;\r\n return `${term.slice(0, MAX_SUGGESTION_TERM_RENDER_LENGTH)}...`;\r\n}\r\n", "import React from 'react';\r\n\r\nimport { useBookmarksStore } from '../stores/bookmarksStore';\r\nimport type { Bookmark } from '../types';\r\nimport { BMark } from './BMark';\r\n\r\n/** Renders the full list of bookmarks, delegating each item to BMark. */\r\nexport function BList({ initial }: { initial: Bookmark[] }) {\r\n const [hasHydrated, setHasHydrated] = React.useState(false);\r\n const bmarks = useBookmarksStore((s) => s.bmarks);\r\n const setAll = useBookmarksStore((s) => s.setAll);\r\n const removeById = useBookmarksStore((s) => s.removeById);\r\n const upsert = useBookmarksStore((s) => s.upsert);\r\n\r\n React.useLayoutEffect(() => {\r\n setAll(initial);\r\n setHasHydrated(true);\r\n }, [initial, setAll]);\r\n\r\n const visibleBmarks = hasHydrated ? bmarks : initial;\r\n\r\n return (\r\n <div>\r\n {visibleBmarks.map((b) => (\r\n <BMark\r\n key={b.bid}\r\n initial={b}\r\n onNotifyRemove={() => {\r\n removeById(b.bid);\r\n }}\r\n onUpdated={(bm) => {\r\n upsert(bm);\r\n }}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n", "const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n", "import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n", "import { create } from 'zustand';\n\nimport type { Bookmark } from '../types';\n\nexport type BookmarksState = {\n bmarks: Bookmark[];\n setAll: (bmarks: Bookmark[]) => void;\n removeById: (bid: number) => void;\n upsert: (bm: Bookmark) => void;\n};\n\nexport const useBookmarksStore = create<BookmarksState>((set) => ({\n bmarks: [],\n setAll: (bmarks) => {\n set({ bmarks });\n },\n removeById: (bid) => {\n set((s) => ({ bmarks: s.bmarks.filter((b) => b.bid !== bid) }));\n },\n upsert: (bm) => {\n set((s) => ({ bmarks: s.bmarks.map((b) => (b.bid === bm.bid ? bm : b)) }));\n },\n}));\n", "import { TimeoutError } from 'ky';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { archiveBookmark, destroy, editBookmark, lookupTitle, markRead, toggleStar } from '../api';\r\nimport { app, setFocus, shdatetime, toLocaleDateString } from '../globals';\r\nimport { useTagSuggestions } from '../hooks/useTagSuggestions';\r\nimport type { Bookmark } from '../types';\r\nimport { apiErrorMsg, encodeTag, fromNullableStr, normalizeTags } from '../util';\r\nimport { Markdown } from './Markdown';\r\nimport { TagSuggestionsDropdown } from './TagSuggestionsDropdown';\r\n\r\n/** Displays a single bookmark with inline editing, starring, and deletion. */\r\nexport function BMark({\r\n initial,\r\n onNotifyRemove,\r\n onUpdated,\r\n}: {\r\n initial: Bookmark;\r\n onNotifyRemove: () => void;\r\n onUpdated: (bm: Bookmark) => void;\r\n}) {\r\n const { t } = useTranslation();\r\n const a = app();\r\n const [bm, setBm] = React.useState<Bookmark>(initial);\r\n const [editBm, setEditBm] = React.useState<Bookmark>(initial);\r\n const [deleteAsk, setDeleteAsk] = React.useState(false);\r\n const [edit, setEdit] = React.useState(false);\r\n const [loading, setLoading] = React.useState(false);\r\n const [archiving, setArchiving] = React.useState(false);\r\n const [actionError, setActionError] = React.useState<string | null>(null);\r\n const [errorFadingOut, setErrorFadingOut] = React.useState(false);\r\n const errorTimer = React.useRef<number | null>(null);\r\n const fadeTimer = React.useRef<number | null>(null);\r\n\r\n React.useEffect(() => {\r\n return () => {\r\n if (errorTimer.current !== null) window.clearTimeout(errorTimer.current);\r\n if (fadeTimer.current !== null) window.clearTimeout(fadeTimer.current);\r\n };\r\n }, []);\r\n\r\n function clearErrorTimers() {\r\n if (errorTimer.current !== null) {\r\n window.clearTimeout(errorTimer.current);\r\n errorTimer.current = null;\r\n }\r\n if (fadeTimer.current !== null) {\r\n window.clearTimeout(fadeTimer.current);\r\n fadeTimer.current = null;\r\n }\r\n }\r\n\r\n function showActionError(msg: string) {\r\n clearErrorTimers();\r\n setErrorFadingOut(false);\r\n setActionError(msg);\r\n errorTimer.current = window.setTimeout(() => {\r\n errorTimer.current = null;\r\n setErrorFadingOut(true);\r\n fadeTimer.current = window.setTimeout(() => {\r\n setActionError(null);\r\n setErrorFadingOut(false);\r\n fadeTimer.current = null;\r\n }, 5000);\r\n }, 3000);\r\n }\r\n\r\n const tagInputId = `${bm.bid.toString()}_tags`;\r\n\r\n const linkToFilterSingle = `${fromNullableStr(a.userR)}/b:${bm.slug}`;\r\n const linkToFilterTag = (tag: string) => `${fromNullableStr(a.userR)}/t:${encodeTag(tag)}`;\r\n const viewInContextTime = (time: Date) => {\r\n const t = new Date(time);\r\n const t2 = new Date(t.getTime() + 2);\r\n return t2.toISOString();\r\n };\r\n const linkToViewInContext = `${fromNullableStr(a.userR)}?before=${encodeURIComponent(viewInContextTime(new Date(bm.time)))}`;\r\n\r\n const suggestEnabled = a.dat.suggestTags === true;\r\n const suggestUseReturnKey = a.dat.suggestTagsUseReturnKey !== false;\r\n\r\n const {\r\n tagInputRef,\r\n suggestionState,\r\n closeSuggestions,\r\n onTagsChange,\r\n onTagsKeyDown,\r\n onTagsSelect,\r\n onSuggestionHover,\r\n onSuggestionPick,\r\n } = useTagSuggestions({\r\n enabled: suggestEnabled,\r\n useReturnKey: suggestUseReturnKey,\r\n tags: editBm.tags,\r\n onTagsUpdate: (tags) => {\r\n setEditBm((x) => ({ ...x, tags }));\r\n },\r\n });\r\n\r\n async function onStar(next: boolean) {\r\n try {\r\n const res = await toggleStar(bm.bid, next ? 'star' : 'unstar');\r\n if (!res.ok) {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n clearErrorTimers();\r\n setActionError(null);\r\n const updated = { ...bm, selected: next };\r\n setBm(updated);\r\n setEditBm((x) => ({ ...x, selected: next }));\r\n onUpdated(updated);\r\n } catch (err) {\r\n showActionError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n }\r\n\r\n async function onDestroy() {\r\n try {\r\n const res = await destroy(bm.bid);\r\n if (!res.ok) {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n onNotifyRemove();\r\n } catch (err) {\r\n showActionError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n }\r\n\r\n async function onMarkRead() {\r\n try {\r\n const res = await markRead(bm.bid);\r\n if (!res.ok) {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n clearErrorTimers();\r\n setActionError(null);\r\n const updated = { ...bm, toread: false };\r\n setBm(updated);\r\n onUpdated(updated);\r\n } catch (err) {\r\n showActionError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n }\r\n\r\n function startEdit(next: boolean) {\r\n setEditBm(bm);\r\n setEdit(next);\r\n clearErrorTimers();\r\n setActionError(null);\r\n setErrorFadingOut(false);\r\n setArchiving(false);\r\n closeSuggestions();\r\n if (next) setFocus(tagInputId);\r\n }\r\n\r\n async function onFetchTitle() {\r\n setLoading(true);\r\n try {\r\n const title = await lookupTitle(editBm);\r\n if (title != null) setEditBm((x) => ({ ...x, title }));\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n async function onArchive() {\r\n setArchiving(true);\r\n try {\r\n const res = await archiveBookmark(bm.bid);\r\n if (!res.ok) {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n } finally {\r\n setArchiving(false);\r\n }\r\n }\r\n\r\n const onSubmit = async (e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>): Promise<void> => {\r\n e.preventDefault();\r\n clearErrorTimers();\r\n setActionError(null);\r\n setErrorFadingOut(false);\r\n const editBm2 = { ...editBm, tags: normalizeTags(editBm.tags) };\r\n try {\r\n const res = await editBookmark(editBm2);\r\n if (res.ok && res.status >= 200 && res.status < 300) {\r\n setBm(editBm2);\r\n setEdit(false);\r\n onUpdated(editBm2);\r\n } else {\r\n showActionError(apiErrorMsg(t, res.status, res.bodyText));\r\n }\r\n } catch (err) {\r\n showActionError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n };\r\n\r\n const archivingDisabled = archiving || bm.private || bm.url !== editBm.url;\r\n\r\n return (\r\n <div\r\n id={String(bm.bid)}\r\n className={`bookmark w-100 mw7 pa1 mb3${bm.private ? ' private' : ''}`}\r\n >\r\n {a.dat.isowner ? (\r\n <div className={`star fl pointer${bm.selected ? ' selected' : ''}`}>\r\n <button\r\n className=\"thm-text-border\"\r\n onClick={() => void onStar(!bm.selected)}\r\n type=\"button\"\r\n >\r\n \u272D\r\n </button>\r\n </div>\r\n ) : null}\r\n\r\n {!edit ? (\r\n <div className=\"display\">\r\n <a\r\n href={bm.url}\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n className={`link f5 lh-title${bm.toread ? ' unread' : ''}`}\r\n >\r\n {bm.title === '' ? t('noTitle') : bm.title}\r\n </a>\r\n <br />\r\n <a href={bm.url} className=\"link f7 thm-text-tertiary thm-hover-link-color\">\r\n {bm.url}\r\n </a>\r\n {bm.archiveUrl ? (\r\n <a\r\n href={bm.archiveUrl}\r\n className=\"link f7 thm-text-tertiary thm-hover-link-color ml2 thm-text-success\"\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n title={t('bmark.archiveLinkTitle')}\r\n >\r\n \u2611\r\n </a>\r\n ) : null}\r\n <br />\r\n <div className=\"description mt1 thm-text-secondary\">\r\n <Markdown text={bm.description} />\r\n </div>\r\n <div className=\"tags\">\r\n {bm.tags !== ''\r\n ? bm.tags.split(' ').map((tag) => (\r\n <a\r\n key={tag}\r\n className={`link tag mr1${tag.slice(0, 1) === '.' ? ' private' : ''}`}\r\n href={linkToFilterTag(tag)}\r\n >\r\n {tag}\r\n </a>\r\n ))\r\n : null}\r\n </div>\r\n\r\n <div>\r\n <a\r\n className=\"link f7 di mr5 thm-text-tertiary\"\r\n href={linkToFilterSingle}\r\n data-time={bm.time}\r\n title={shdatetime(a.lang, bm.time)}\r\n >\r\n {toLocaleDateString(a.lang, bm.time)}\r\n </a>\r\n\r\n {a.dat.isowner ? (\r\n <div className=\"edit_links di\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n startEdit(true);\r\n }}\r\n className=\"edit thm-text-muted thm-hover-link-color\"\r\n >\r\n {t('edit')} \r\n </button>\r\n <div className=\"delete_link di\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(true);\r\n }}\r\n className={`delete thm-text-muted thm-hover-link-color${deleteAsk ? ' dn' : ''}`}\r\n >\r\n {t('delete')}\r\n </button>\r\n <span className={`confirm thm-text-error${!deleteAsk ? ' dn' : ''}`}>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(false);\r\n }}\r\n >\r\n {t('cancel')} / \r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => void onDestroy()}\r\n className=\"thm-text-error\"\r\n >\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n ) : null}\r\n\r\n {a.dat.isowner && bm.toread ? (\r\n <div className=\"read di\">\r\n \r\n <button onClick={() => void onMarkRead()} className=\"mark_read\" type=\"button\">\r\n {t('bmark.markAsRead')}\r\n </button>\r\n </div>\r\n ) : null}\r\n </div>\r\n\r\n {a.dat.filter?.tag == 'FilterSingle' ? (\r\n <div className=\"mt2\">\r\n <a className=\"link f7 di mr5\" href={linkToViewInContext}>\r\n {t('bmark.viewInContext')}\r\n </a>\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n {edit ? (\r\n <div className=\"edit_bookmark_form pa2 pt0 thm-bg-surface\">\r\n <form onSubmit={(e) => void onSubmit(e)}>\r\n <div>{t('bmark.url')}</div>\r\n <input\r\n type=\"url\"\r\n className=\"url w-100 mb2 pt1 edit_form_input\"\r\n required\r\n name=\"url\"\r\n value={editBm.url}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, url: e.target.value }));\r\n }}\r\n />\r\n <div>{t('bmark.title')}</div>\r\n <div className=\"flex\">\r\n <input\r\n type=\"text\"\r\n className=\"title w-100 mb2 pt1 edit_form_input\"\r\n name=\"title\"\r\n value={editBm.title}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, title: e.target.value }));\r\n }}\r\n />\r\n <button\r\n disabled={loading}\r\n type=\"button\"\r\n onClick={() => void onFetchTitle()}\r\n className={`ml1 pa1 mb2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim f7${\r\n loading ? ' thm-bg-disabled' : ''\r\n }`}\r\n >\r\n {t('fetch')}\r\n </button>\r\n </div>\r\n <div>{t('bmark.description')}</div>\r\n <textarea\r\n className=\"description w-100 mb1 pt1 edit_form_input\"\r\n name=\"description\"\r\n rows={5}\r\n value={editBm.description}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, description: e.target.value }));\r\n }}\r\n />\r\n <div id=\"tags_input_box\">\r\n <div>{t('bmark.tags')}</div>\r\n <div className=\"relative\">\r\n <input\r\n id={tagInputId}\r\n ref={tagInputRef}\r\n type=\"text\"\r\n className=\"tags w-100 mb1 pt1 edit_form_input\"\r\n name=\"tags\"\r\n autoComplete=\"off\"\r\n autoCapitalize=\"off\"\r\n value={editBm.tags}\r\n onChange={onTagsChange}\r\n onKeyDown={onTagsKeyDown}\r\n onClick={onTagsSelect}\r\n onSelect={onTagsSelect}\r\n onBlur={() => {\r\n window.setTimeout(() => {\r\n closeSuggestions();\r\n }, 0);\r\n }}\r\n />\r\n {suggestionState != null ? (\r\n <TagSuggestionsDropdown\r\n suggestionState={suggestionState}\r\n onHover={onSuggestionHover}\r\n onPick={onSuggestionPick}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n <div className=\"edit_form_checkboxes mv3\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"private pointer\"\r\n id=\"edit_private\"\r\n name=\"private\"\r\n checked={editBm.private}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, private: e.target.checked }));\r\n }}\r\n />{' '}\r\n <label htmlFor=\"edit_private\" className=\"mr2\">\r\n {t('bmark.private')}\r\n </label>{' '}\r\n <input\r\n type=\"checkbox\"\r\n className=\"toread pointer\"\r\n id=\"edit_toread\"\r\n name=\"toread\"\r\n checked={editBm.toread}\r\n onChange={(e) => {\r\n setEditBm((x) => ({ ...x, toread: e.target.checked }));\r\n }}\r\n />{' '}\r\n <label htmlFor=\"edit_toread\">{t('bmark.toread')}</label>\r\n </div>\r\n <div className=\"flex justify-between items-center\">\r\n <div>\r\n <input\r\n type=\"submit\"\r\n className=\"mr1 pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n value={t('save')}\r\n />{' '}\r\n <input\r\n type=\"reset\"\r\n className=\"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n value={t('cancel')}\r\n onClick={() => {\r\n startEdit(false);\r\n }}\r\n />\r\n </div>\r\n {a.dat.archiveBackendEnabled ? (\r\n <button\r\n type=\"button\"\r\n disabled={archivingDisabled}\r\n onClick={() => void onArchive()}\r\n className={`pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary${archiving ? ' thm-bg-disabled' : ''}${archivingDisabled ? ' not-allowed o-20' : ''}`}\r\n >\r\n {archiving ? t('archiving') : t('archive')}\r\n </button>\r\n ) : null}\r\n </div>\r\n </form>\r\n </div>\r\n ) : null}\r\n\r\n {actionError != null ? (\r\n <span\r\n className=\"thm-text-error f7 db mt1\"\r\n style={{\r\n opacity: errorFadingOut ? 0 : 1,\r\n transition: errorFadingOut ? 'opacity 5s' : 'none',\r\n }}\r\n >\r\n {actionError}\r\n </span>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function <T>(x: T): T {\n return x;\n };\n}\n\nif (!seal) {\n seal = function <T>(x: T): T {\n return x;\n };\n}\n\nif (!apply) {\n apply = function <T>(\n func: (thisArg: any, ...args: any[]) => T,\n thisArg: any,\n ...args: any[]\n ): T {\n return func.apply(thisArg, args);\n };\n}\n\nif (!construct) {\n construct = function <T>(Func: new (...args: any[]) => T, ...args: any[]): T {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString =\n typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);\nconst symbolToString =\n typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n return (thisArg: any, ...args: any[]): T => {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n\n return apply(func, thisArg, args);\n };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(\n Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n set: Record<string, boolean>,\n array: readonly unknown[],\n transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, boolean> {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n if (!arrayIsArray(array)) {\n return set;\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n (array as unknown[])[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element as string] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n\n if (isPropertyExist) {\n if (arrayIsArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * Convert non-node values into strings without depending on direct property access.\n *\n * @param value - The value to stringify.\n * @returns A string representation of the provided value.\n */\nfunction stringifyValue(value: unknown): string {\n switch (typeof value) {\n case 'string': {\n return value;\n }\n\n case 'number': {\n return numberToString(value);\n }\n\n case 'boolean': {\n return booleanToString(value);\n }\n\n case 'bigint': {\n return bigintToString ? bigintToString(value) : '0';\n }\n\n case 'symbol': {\n return symbolToString ? symbolToString(value) : 'Symbol()';\n }\n\n case 'undefined': {\n return objectToString(value);\n }\n\n case 'function':\n case 'object': {\n if (value === null) {\n return objectToString(value);\n }\n\n const valueAsRecord = value as Record<string, any>;\n const valueToString = lookupGetter(valueAsRecord, 'toString');\n\n if (typeof valueToString === 'function') {\n const stringified = valueToString(valueAsRecord);\n\n return typeof stringified === 'string'\n ? stringified\n : objectToString(stringified);\n }\n\n return objectToString(value);\n }\n\n default: {\n return objectToString(value);\n }\n }\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n object: T,\n prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(): null {\n return null;\n }\n\n return fallbackValue;\n}\n\nfunction isRegex(value: unknown): value is RegExp {\n try {\n regExpTest(value as RegExp, '');\n return true;\n } catch {\n return false;\n }\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayIsArray,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n arraySplice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n objectHasOwnProperty,\n objectToString,\n // RegExp\n regExpTest,\n isRegex,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Other conversion\n stringifyValue,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'search',\n 'section',\n 'select',\n 'shadow',\n 'slot',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n] as const);\n\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'enterkeyhint',\n 'exportparts',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'inputmode',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'part',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n] as const);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'command',\n 'commandfor',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'exportparts',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inert',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'part',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'popover',\n 'popovertarget',\n 'popovertargetaction',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'slot',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'wrap',\n 'xmlns',\n] as const);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'amplitude',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'exponent',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'intercept',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'mask-type',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'slope',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'tablevalues',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnalign',\n 'columnlines',\n 'columnspacing',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lquote',\n 'lspace',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n] as const);\n", "import { seal } from './utils.js';\n\nexport const MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n", "/* eslint-disable @typescript-eslint/indent */\n\nimport type {\n TrustedHTML,\n TrustedTypesWindow,\n} from 'trusted-types/lib/index.js';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayIsArray,\n arrayLastIndexOf,\n arrayPop,\n arrayPush,\n arraySplice,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n isRegex,\n typeErrorCreate,\n lookupGetter,\n create,\n objectHasOwnProperty,\n stringifyValue,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5, // Deprecated\n entityNode: 6, // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n trustedTypes: TrustedTypePolicyFactory,\n purifyHostElement: HTMLScriptElement\n) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nconst _createHooksMap = function (): HooksMap {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: [],\n };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n DOMPurify.version = VERSION;\n\n DOMPurify.removed = [];\n\n if (\n !window ||\n !window.document ||\n window.document.nodeType !== NODE_TYPE.document ||\n !window.Element\n ) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript: HTMLScriptElement =\n originalDocument.currentScript as HTMLScriptElement;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n const getShadowRoot = lookupGetter(ElementPrototype, 'shadowRoot');\n const getAttributes = lookupGetter(ElementPrototype, 'attributes');\n const getNodeType =\n Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;\n const getNodeName =\n Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = _createHooksMap();\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n })\n );\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (\u00A77.3.3)\n * - DOM Tree Accessors (\u00A73.1.5)\n * - Form Element Parent-Child Relations (\u00A74.10.3)\n * - Iframe srcdoc / Nested WindowProxies (\u00A74.8.5)\n * - HTMLCollection (\u00A74.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES: UseProfilesConfig | false = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG: Config | null = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (\n testValue: unknown\n ): testValue is Function | RegExp {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg: Config = {}): void {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS =\n objectHasOwnProperty(cfg, 'ALLOWED_TAGS') &&\n arrayIsArray(cfg.ALLOWED_TAGS)\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR =\n objectHasOwnProperty(cfg, 'ALLOWED_ATTR') &&\n arrayIsArray(cfg.ALLOWED_ATTR)\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES =\n objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') &&\n arrayIsArray(cfg.ALLOWED_NAMESPACES)\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES =\n objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') &&\n arrayIsArray(cfg.ADD_URI_SAFE_ATTR)\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n cfg.ADD_URI_SAFE_ATTR,\n transformCaseFunc\n )\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS =\n objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') &&\n arrayIsArray(cfg.ADD_DATA_URI_TAGS)\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS),\n cfg.ADD_DATA_URI_TAGS,\n transformCaseFunc\n )\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS =\n objectHasOwnProperty(cfg, 'FORBID_CONTENTS') &&\n arrayIsArray(cfg.FORBID_CONTENTS)\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS =\n objectHasOwnProperty(cfg, 'FORBID_TAGS') && arrayIsArray(cfg.FORBID_TAGS)\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : clone({});\n FORBID_ATTR =\n objectHasOwnProperty(cfg, 'FORBID_ATTR') && arrayIsArray(cfg.FORBID_ATTR)\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === 'object'\n ? clone(cfg.USE_PROFILES)\n : cfg.USE_PROFILES\n : false;\n\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = isRegex(cfg.ALLOWED_URI_REGEXP)\n ? cfg.ALLOWED_URI_REGEXP\n : EXPRESSIONS.IS_ALLOWED_URI; // Default regexp\n\n NAMESPACE =\n typeof cfg.NAMESPACE === 'string' ? cfg.NAMESPACE : HTML_NAMESPACE; // Default HTML namespace\n\n MATHML_TEXT_INTEGRATION_POINTS =\n objectHasOwnProperty(cfg, 'MATHML_TEXT_INTEGRATION_POINTS') &&\n cfg.MATHML_TEXT_INTEGRATION_POINTS &&\n typeof cfg.MATHML_TEXT_INTEGRATION_POINTS === 'object'\n ? clone(cfg.MATHML_TEXT_INTEGRATION_POINTS)\n : addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']); // Default built-in map\n\n HTML_INTEGRATION_POINTS =\n objectHasOwnProperty(cfg, 'HTML_INTEGRATION_POINTS') &&\n cfg.HTML_INTEGRATION_POINTS &&\n typeof cfg.HTML_INTEGRATION_POINTS === 'object'\n ? clone(cfg.HTML_INTEGRATION_POINTS)\n : addToSet({}, ['annotation-xml']); // Default built-in map\n\n const customElementHandling =\n objectHasOwnProperty(cfg, 'CUSTOM_ELEMENT_HANDLING') &&\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING === 'object'\n ? clone(cfg.CUSTOM_ELEMENT_HANDLING)\n : create(null);\n\n CUSTOM_ELEMENT_HANDLING = create(null);\n\n if (\n objectHasOwnProperty(customElementHandling, 'tagNameCheck') &&\n isRegexOrFunction(customElementHandling.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck; // Default undefined\n }\n\n if (\n objectHasOwnProperty(customElementHandling, 'attributeNameCheck') &&\n isRegexOrFunction(customElementHandling.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n customElementHandling.attributeNameCheck; // Default undefined\n }\n\n if (\n objectHasOwnProperty(\n customElementHandling,\n 'allowCustomizedBuiltInElements'\n ) &&\n typeof customElementHandling.allowCustomizedBuiltInElements === 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n customElementHandling.allowCustomizedBuiltInElements; // Default undefined\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = create(null);\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent\n * leaking across calls when switching from function to array config */\n EXTRA_ELEMENT_HANDLING.tagCheck = null;\n EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\n /* Merge configuration parameters */\n if (objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else if (arrayIsArray(cfg.ADD_TAGS)) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n\n if (objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else if (arrayIsArray(cfg.ADD_ATTR)) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n\n if (\n objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') &&\n arrayIsArray(cfg.ADD_URI_SAFE_ATTR)\n ) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (\n objectHasOwnProperty(cfg, 'FORBID_CONTENTS') &&\n arrayIsArray(cfg.FORBID_CONTENTS)\n ) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n if (\n objectHasOwnProperty(cfg, 'ADD_FORBID_CONTENTS') &&\n arrayIsArray(cfg.ADD_FORBID_CONTENTS)\n ) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n /*\n * Mirror the clone-before-mutate pattern already applied above for\n * cfg.ADD_TAGS / cfg.ADD_ATTR: if any uponSanitize* hook is\n * registered AND the set still points at the default constant,\n * clone it. The hook then mutates the clone (in-call widening\n * still works exactly as documented) and the next default-cfg\n * call rebinds to the untouched original via the reassignment at\n * the top of this function.\n */\n if (\n (hooks.uponSanitizeElement.length > 0 ||\n hooks.uponSanitizeAttribute.length > 0) &&\n ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS\n ) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n if (\n hooks.uponSanitizeAttribute.length > 0 &&\n ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR\n ) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element: Element): boolean {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function (node: Node): void {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function (name: string, element: Element): void {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element,\n });\n }\n\n element.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty: string): Document {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n dirty +\n '</body></html>';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function (root: Node): NodeIterator {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n NodeFilter.SHOW_CDATA_SECTION,\n null\n );\n };\n\n /**\n * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n * character data of an element subtree. Used as the final safety net for\n * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n * which only form after text-node normalization (e.g. fragments split across\n * stripped elements) cannot survive into a template-evaluating framework.\n *\n * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n * in place rather than round-tripping through innerHTML. This preserves\n * descendant node references (important for IN_PLACE callers), avoids a\n * serialize/reparse cycle, and reads literal character data \u2014 which means\n * `<%...%>` in text content matches the ERB regex against its real bytes\n * instead of the HTML-entity-escaped form innerHTML would produce.\n *\n * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n * attributes is performed during the per-node `_sanitizeAttributes` pass.\n *\n * @param node The root element whose character data should be scrubbed.\n */\n const _scrubTemplateExpressions = function (node: Element): void {\n node.normalize();\n const walker = createNodeIterator.call(\n node.ownerDocument || node,\n node,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_TEXT |\n NodeFilter.SHOW_COMMENT |\n NodeFilter.SHOW_CDATA_SECTION |\n NodeFilter.SHOW_PROCESSING_INSTRUCTION,\n null\n );\n\n let currentNode = walker.nextNode() as CharacterData | null;\n while (currentNode) {\n let data = currentNode.data;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n data = stringReplace(data, expr, ' ');\n });\n currentNode.data = data;\n currentNode = walker.nextNode() as CharacterData | null;\n }\n };\n\n /**\n * _isClobbered\n *\n * Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n * interface with [LegacyOverrideBuiltIns]; a descendant element with a\n * `name` attribute matching a prototype property shadows that property\n * on direct reads. We use this check at the IN_PLACE entry-point and\n * during attribute sanitization to refuse clobbered forms.\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function (element: Element): boolean {\n // Realm-independent tag-name probe. If we can't determine the tag\n // name at all, we can't reason about clobbering \u2014 return false\n // (the caller's other defences still apply).\n const realTagName = getNodeName ? getNodeName(element) : null;\n if (typeof realTagName !== 'string') {\n return false;\n }\n\n if (transformCaseFunc(realTagName) !== 'form') {\n return false;\n }\n\n return (\n typeof element.nodeName !== 'string' ||\n typeof element.textContent !== 'string' ||\n typeof element.removeChild !== 'function' ||\n // Realm-safe NamedNodeMap detection: equality against the cached\n // prototype getter. Clobbered .attributes (e.g. <input name=\"attributes\">)\n // makes the direct read diverge from the cached read; a clean form\n // (same-realm OR foreign-realm) has both reads pointing at the same\n // canonical NamedNodeMap.\n element.attributes !== getAttributes(element) ||\n typeof element.removeAttribute !== 'function' ||\n typeof element.setAttribute !== 'function' ||\n typeof element.namespaceURI !== 'string' ||\n typeof element.insertBefore !== 'function' ||\n typeof element.hasChildNodes !== 'function' ||\n // NodeType clobbering probe. Cached Node.prototype.nodeType getter\n // returns the integer 1 for any Element regardless of realm; direct\n // read on a clobbered form (e.g. <input name=\"nodeType\">) returns\n // the named child element. Cheap addition \u2014 nodeType is read from\n // an internal slot, no serialization cost \u2014 and removes a residual\n // clobbering surface used by several mXSS / PI / comment branches\n // in _sanitizeElements that compare currentNode.nodeType directly.\n element.nodeType !== getNodeType(element) ||\n // HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named\n // \"childNodes\" shadows the prototype getter. Direct reads of\n // form.childNodes from a clobbered form return the named child\n // instead of the real NodeList, so any walk that reads it directly\n // skips the form's real children. Compare the direct read to the\n // cached Node.prototype getter \u2014 when the form's named-property\n // getter intercepts the read, the two values differ and we flag\n // the form. This catches every clobbering child type (input,\n // select, etc.) regardless of whether the named child happens to\n // carry a numeric .length, which a typeof-based probe would miss\n // (e.g. HTMLSelectElement.length is a defined unsigned-long).\n element.childNodes !== getChildNodes(element)\n );\n };\n\n /**\n * Checks whether the given value is a DocumentFragment from any realm.\n *\n * The realm-independent replacement reads `nodeType` through the cached\n * Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n * constant (11). nodeType is a numeric value resolved from the node's\n * internal slot, identical across realms for the same kind of node.\n *\n * @param value object to check\n * @return true if value is a DocumentFragment-shaped node from any realm\n */\n const _isDocumentFragment = function (value: unknown): boolean {\n if (!getNodeType || typeof value !== 'object' || value === null) {\n return false;\n }\n\n try {\n return getNodeType(value as Node) === NODE_TYPE.documentFragment;\n } catch (_) {\n return false;\n }\n };\n\n /**\n * Checks whether the given object is a DOM node, including nodes that\n * originate from a different window/realm (e.g. an iframe's\n * contentDocument). The previous `value instanceof Node` check was\n * realm-bound: nodes from a different window failed it, causing\n * sanitize() to silently stringify them and reset IN_PLACE to false,\n * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n *\n * @param value object to check whether it's a DOM node\n * @return true if value is a DOM node from any realm\n */\n const _isNode = function (value: unknown): value is Node {\n if (!getNodeType || typeof value !== 'object' || value === null) {\n return false;\n }\n\n try {\n return typeof getNodeType(value) === 'number';\n } catch (_) {\n return false;\n }\n };\n\n function _executeHooks<T extends HookFunction>(\n hooks: HookFunction[],\n currentNode: Parameters<T>[0],\n data: Parameters<T>[1]\n ): void {\n arrayForEach(hooks, (hook: T) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode: any): boolean {\n let content = null;\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n SAFE_FOR_XML &&\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w!]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove risky CSS construction leading to mXSS */\n if (\n SAFE_FOR_XML &&\n currentNode.namespaceURI === HTML_NAMESPACE &&\n tagName === 'style' &&\n _isNode(currentNode.firstElementChild)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove any kind of possibly harmful comments */\n if (\n SAFE_FOR_XML &&\n currentNode.nodeType === NODE_TYPE.comment &&\n regExpTest(/<[/\\w]/g, currentNode.data)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (\n FORBID_TAGS[tagName] ||\n (!(\n EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function &&\n EXTRA_ELEMENT_HANDLING.tagCheck(tagName)\n ) &&\n !ALLOWED_TAGS[tagName])\n ) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements.\n Use the cached prototype getters exclusively \u2014 the previous code\n had `|| currentNode.parentNode` / `|| currentNode.childNodes`\n fallbacks, but the cached getters always return the canonical\n value (or null for a real parent-less node), so the fallback\n path was dead in safe cases and a clobbering surface in unsafe\n ones. Falsy cached results stay falsy; the `if (childNodes &&\n parentNode)` check already gates correctly. */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode);\n const childNodes = getChildNodes(currentNode);\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): use the cached Node.prototype\n nodeType getter rather than `instanceof Element`, which is realm-\n bound and short-circuits to false for any node minted in a different\n realm \u2014 letting a foreign-realm element with a forbidden namespace\n slip past the namespace check entirely. */\n const nt = getNodeType ? getNodeType(currentNode) : currentNode.nodeType;\n if (nt === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (\n lcTag: string,\n lcName: string,\n value: string\n ): boolean {\n /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n if (FORBID_ATTR[lcName]) {\n return false;\n }\n\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n const nameIsPermitted =\n ALLOWED_ATTR[lcName] ||\n (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function &&\n EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag));\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!nameIsPermitted || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /* Names the HTML spec reserves from valid-custom-element-name; these must\n * never be treated as basic custom elements even when a permissive\n * CUSTOM_ELEMENT_HANDLING.tagNameCheck is configured. */\n const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n 'annotation-xml',\n 'color-profile',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'missing-glyph',\n ]);\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName: string): boolean {\n return (\n !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] &&\n regExpTest(CUSTOM_ELEMENT, tagName)\n );\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode: Element): void {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (\n SANITIZE_NAMED_PROPS &&\n (lcName === 'id' || lcName === 'name') &&\n stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0\n ) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n // Else: already prefixed, leave the attribute alone \u2014 the prefix is\n // itself the clobbering protection, and re-applying it is incorrect.\n\n /* Work around a security issue with comments inside attributes */\n if (\n SAFE_FOR_XML &&\n regExpTest(\n /((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,\n value\n )\n ) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n\n /* Deep shadow DOM detected.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType against the\n DOCUMENT_FRAGMENT_NODE constant rather than instanceof, so we\n recurse into <template>.content from foreign realms too. */\n if (_isDocumentFragment(shadowNode.content)) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* An element iterated here may itself host an attached\n shadow root. The default NodeIterator does not enter shadow\n trees, so a shadow root nested inside template.content was\n previously reached by no walk at all (the pre-pass at\n _sanitizeAttachedShadowRoots descends via childNodes, which\n doesn't enter template.content; the template-content recursion\n above iterates the content but never inspected shadowRoot).\n Walk it explicitly. The nodeType guard avoids reading\n shadowRoot off text / comment / CDATA / PI nodes that the\n iterator also surfaces. */\n const shadowNodeType = getNodeType\n ? getNodeType(shadowNode)\n : (shadowNode as Node).nodeType;\n if (shadowNodeType === NODE_TYPE.element) {\n const innerSr = getShadowRoot\n ? getShadowRoot(shadowNode)\n : (shadowNode as Element).shadowRoot;\n if (_isDocumentFragment(innerSr)) {\n _sanitizeAttachedShadowRoots(innerSr);\n _sanitizeShadowDOM(innerSr);\n }\n }\n }\n\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n\n /**\n * _sanitizeAttachedShadowRoots\n *\n * Walks `root` and feeds every attached shadow root we encounter into\n * the existing _sanitizeShadowDOM pipeline. The default node iterator\n * does not descend into shadow trees, so nodes inside an attached\n * shadow root would otherwise be skipped entirely.\n *\n * Two real input paths put attached shadow roots in front of us:\n * 1. IN_PLACE on a DOM node that already has shadow roots attached.\n * 2. DOM-node input where importNode(dirty, true) deep-clones the\n * shadow root because it was created with `clonable: true`.\n *\n * This pass runs once, up front, so the main iteration loop (and the\n * existing _sanitizeShadowDOM template-content recursion) stay\n * untouched \u2014 string-input paths are not affected.\n *\n * @param root the subtree root to walk for attached shadow roots\n */\n const _sanitizeAttachedShadowRoots = function (root: Node): void {\n const nodeType = getNodeType ? getNodeType(root) : (root as any).nodeType;\n\n if (nodeType === NODE_TYPE.element) {\n const sr = getShadowRoot\n ? getShadowRoot(root)\n : (root as Element).shadowRoot;\n // Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType-based\n // detection rather than `instanceof DocumentFragment`, which is\n // realm-bound and silently skipped shadow roots whose host element\n // belonged to a foreign realm (e.g. iframe.contentDocument\n // attachShadow). A foreign-realm ShadowRoot extends the foreign\n // realm's DocumentFragment, not ours, so the old instanceof check\n // returned false and the shadow subtree was never walked.\n if (_isDocumentFragment(sr)) {\n // Recurse first so that nested shadow roots are reached even if\n // _sanitizeShadowDOM removes hosts at this level.\n _sanitizeAttachedShadowRoots(sr);\n _sanitizeShadowDOM(sr);\n }\n }\n\n // Snapshot children before recursing. Sanitization of one subtree\n // (e.g. via an uponSanitizeShadowNode hook) may detach siblings,\n // and naive nextSibling traversal would silently skip the rest of\n // the list once a node is detached.\n const childNodes = getChildNodes\n ? getChildNodes(root)\n : (root as Element).childNodes;\n if (!childNodes) {\n return;\n }\n\n const snapshot: Node[] = [];\n arrayForEach(childNodes, (child) => {\n arrayPush(snapshot, child);\n });\n\n for (const child of snapshot) {\n _sanitizeAttachedShadowRoots(child);\n }\n\n /* When the root is a <template>, also descend into root.content */\n if (nodeType === NODE_TYPE.element) {\n const rootName = getNodeName ? getNodeName(root) : null;\n if (\n typeof rootName === 'string' &&\n transformCaseFunc(rootName) === 'template'\n ) {\n const content = (root as HTMLTemplateElement).content;\n if (_isDocumentFragment(content)) {\n _sanitizeAttachedShadowRoots(content);\n }\n }\n }\n };\n\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n dirty = stringifyValue(dirty);\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes.\n Read nodeName through the cached prototype getter \u2014 a clobbering\n child named \"nodeName\" on the form root would otherwise shadow\n the property and let this check skip the root-allowlist\n validation entirely. */\n const nn = getNodeName\n ? getNodeName(dirty as Node)\n : (dirty as Node).nodeName;\n if (typeof nn === 'string') {\n const tagName = transformCaseFunc(nn);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n\n /* Pre-flight the root through _isClobbered. The iterator-driven\n removal path can not detach a parent-less root: _forceRemove\n falls through to Element.prototype.remove(), which per spec\n is a no-op on a node with no parent. A clobbered root would\n then survive the main loop with its attributes uninspected,\n because _sanitizeAttributes early-returns on _isClobbered. The\n result would be an attacker-controlled form, complete with any\n event-handler attributes the caller passed in, handed back to\n the application unsanitized. Refuse to sanitize such a root\n the same way we refuse a forbidden tag. GHSA-r47g-fvhr-h676. */\n if (_isClobbered(dirty as Element)) {\n throw typeErrorCreate(\n 'root node is clobbered and cannot be sanitized in-place'\n );\n }\n\n /* Sanitize attached shadow roots before the main iterator runs.\n The iterator does not descend into shadow trees. */\n _sanitizeAttachedShadowRoots(dirty as Node);\n } else if (_isNode(dirty)) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (\n importedNode.nodeType === NODE_TYPE.element &&\n importedNode.nodeName === 'BODY'\n ) {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n\n /* Clonable shadow roots are deep-cloned by importNode(); sanitize\n them before the main iterator runs, since the iterator does not\n descend into shadow trees. The walk routes every read through a\n cached prototype getter so clobbering descendants on a form root\n cannot hide a shadow host from this pass. */\n _sanitizeAttachedShadowRoots(importedNode);\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n\n /* Shadow DOM detected, sanitize it.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n instead of instanceof, so foreign-realm <template>.content is\n walked correctly. */\n if (_isDocumentFragment(currentNode.content)) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n if (SAFE_FOR_TEMPLATES) {\n _scrubTemplateExpressions(dirty as Element);\n }\n\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (SAFE_FOR_TEMPLATES) {\n _scrubTemplateExpressions(body);\n }\n\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr: RegExp) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n DOMPurify.addHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n DOMPurify.removeHook = function (\n entryPoint: keyof HooksMap,\n hookFunction: HookFunction\n ) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n return index === -1\n ? undefined\n : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n\n return arrayPop(hooks[entryPoint]);\n };\n\n DOMPurify.removeHooks = function (entryPoint: keyof HooksMap) {\n hooks[entryPoint] = [];\n };\n\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n /**\n * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n */\n (root?: WindowLike): DOMPurify;\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n version: string;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n removed: Array<RemovedElement | RemovedAttribute>;\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n isSupported: boolean;\n\n /**\n * Set the configuration once.\n *\n * @param cfg configuration object\n */\n setConfig(cfg?: Config): void;\n\n /**\n * Removes the configuration.\n */\n clearConfig(): void;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized TrustedHTML.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_TRUSTED_TYPE: true }\n ): TrustedHTML;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized DOM node.\n */\n sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized document fragment.\n */\n sanitize(\n dirty: string | Node,\n cfg: Config & { RETURN_DOM_FRAGMENT: true }\n ): DocumentFragment;\n\n /**\n * Provides core sanitation functionality.\n *\n * @param dirty string or DOM node\n * @param cfg object\n * @returns Sanitized string.\n */\n sanitize(dirty: string | Node, cfg?: Config): string;\n\n /**\n * Checks if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n *\n * @param tag Tag name of containing element.\n * @param attr Attribute name.\n * @param value Attribute value.\n * @returns Returns true if `value` is valid. Otherwise, returns false.\n */\n isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction: DocumentFragmentHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction: UponSanitizeElementHook\n ): void;\n\n /**\n * Adds a DOMPurify hook.\n *\n * @param entryPoint entry point for the hook to add\n * @param hookFunction function to execute\n */\n addHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction: UponSanitizeAttributeHook\n ): void;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: BasicHookName,\n hookFunction?: NodeHook\n ): NodeHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: ElementHookName,\n hookFunction?: ElementHook\n ): ElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: DocumentFragmentHookName,\n hookFunction?: DocumentFragmentHook\n ): DocumentFragmentHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeElement',\n hookFunction?: UponSanitizeElementHook\n ): UponSanitizeElementHook | undefined;\n\n /**\n * Remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if hook not specified)\n *\n * @param entryPoint entry point for the hook to remove\n * @param hookFunction optional specific hook to remove\n * @returns removed hook\n */\n removeHook(\n entryPoint: 'uponSanitizeAttribute',\n hookFunction?: UponSanitizeAttributeHook\n ): UponSanitizeAttributeHook | undefined;\n\n /**\n * Removes all DOMPurify hooks at a given entryPoint\n *\n * @param entryPoint entry point for the hooks to remove\n */\n removeHooks(entryPoint: HookName): void;\n\n /**\n * Removes all DOMPurify hooks.\n */\n removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n /**\n * The element that was removed.\n */\n element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n /**\n * The attribute that was removed.\n */\n attribute: Attr | null;\n\n /**\n * The element that the attribute was removed.\n */\n from: Node;\n}\n\ntype BasicHookName =\n | 'beforeSanitizeElements'\n | 'afterSanitizeElements'\n | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n | 'beforeSanitizeShadowDOM'\n | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n beforeSanitizeElements: NodeHook[];\n afterSanitizeElements: NodeHook[];\n beforeSanitizeShadowDOM: DocumentFragmentHook[];\n uponSanitizeShadowNode: NodeHook[];\n afterSanitizeShadowDOM: DocumentFragmentHook[];\n beforeSanitizeAttributes: ElementHook[];\n afterSanitizeAttributes: ElementHook[];\n uponSanitizeElement: UponSanitizeElementHook[];\n uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\ntype ArrayElement<T> = T extends Array<infer U> ? U : never;\n\ntype HookFunction = ArrayElement<HooksMap[keyof HooksMap]>;\n\nexport type HookName =\n | BasicHookName\n | ElementHookName\n | DocumentFragmentHookName\n | UponSanitizeElementHookName\n | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type ElementHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n this: DOMPurify,\n currentNode: DocumentFragment,\n hookEvent: null,\n config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n this: DOMPurify,\n currentNode: Node,\n hookEvent: UponSanitizeElementHookEvent,\n config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n this: DOMPurify,\n currentNode: Element,\n hookEvent: UponSanitizeAttributeHookEvent,\n config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n tagName: string;\n allowedTags: Record<string, boolean>;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n attrName: string;\n attrValue: string;\n keepAttr: boolean;\n allowedAttributes: Record<string, boolean>;\n forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n typeof globalThis,\n | 'DocumentFragment'\n | 'HTMLTemplateElement'\n | 'Node'\n | 'Element'\n | 'NodeFilter'\n | 'NamedNodeMap'\n | 'HTMLFormElement'\n | 'DOMParser'\n> & {\n document?: Document;\n MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick<TrustedTypesWindow, 'trustedTypes'>;\n", "import type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Gets the original marked default options.\n */\nexport function _getDefaults<ParserOutput = string, RendererOutput = string>(): MarkedOptions<ParserOutput, RendererOutput> {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport let _defaults: MarkedOptions<any, any> = _getDefaults();\n\nexport function changeDefaults<ParserOutput = string, RendererOutput = string>(newDefaults: MarkedOptions<ParserOutput, RendererOutput>) {\n _defaults = newDefaults;\n}\n", "const noopTest = { exec: () => null } as unknown as RegExp;\n\nfunction cachedIndentRegex(createRegex: (indent: number) => RegExp) {\n const cache: RegExp[] = [];\n return (indent: number) => {\n const cacheIndex = Math.max(0, Math.min(3, indent - 1));\n let regex = cache[cacheIndex];\n if (!regex) {\n regex = createRegex(cacheIndex);\n cache[cacheIndex] = regex;\n }\n return regex;\n };\n}\n\nfunction edit(regex: string | RegExp, opt = '') {\n let source = typeof regex === 'string' ? regex : regex.source;\n const obj = {\n replace: (name: string | RegExp, val: string | RegExp) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(other.caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\n\n// use a default variable to ensure the regex is evaluated on client an not removed by minifiers\nconst supportsLookbehind = ((a = '') => {\ntry {\n return !!new RegExp('(?<=1)(?<!1)' + a);\n} catch {\n // See browser support here:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion\n return false;\n}\n})();\n\nexport const other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] +\\S/,\n listReplaceTask: /^\\[[ xX]\\] +/,\n listTaskCheckbox: /\\[[ xX]\\]/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull: string) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`)),\n hrRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`)),\n fencesBeginRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}(?:\\`\\`\\`|~~~)`)),\n headingBeginRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}#`)),\n htmlBeginRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}<(?:[a-z].*>|!--)`, 'i')),\n blockquoteBeginRegex: cachedIndentRegex((indent: number) => new RegExp(`^ {0,${indent}}>`)),\n};\n\n/**\n * Block-Level Grammar\n */\n\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = / {0,3}(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/\\|table/g, '') // table not in commonmark\n .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\n\nconst list = edit(/^(bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\n\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit(\n '^ {0,3}(?:' // optional indentation\n+ '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n+ '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n+ '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n+ '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n+ '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n+ '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n+ '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n+ '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n+ ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n\ntype BlockKeys = keyof typeof blockNormal;\n\n/**\n * GFM Block Grammar\n */\n\nconst gfmTable = edit(\n '^ *([^\\\\n ].*)\\\\n' // Header\n+ ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n+ '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nconst blockGfm: Record<BlockKeys, RegExp> = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)])[ \\\\t]') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nconst blockPedantic: Record<BlockKeys, RegExp> = {\n ...blockNormal,\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n\n/**\n * Inline-Level Grammar\n */\n\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = /[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nconst punctuation = edit(/^((?![*_])punctSpace)/, 'u')\n .replace(/punctSpace/g, _punctuationOrSpace).getRegex();\n\n// GFM allows ~ inside strong and em for strikethrough\nconst _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\n\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = edit(/link|precode-code|html/, 'g')\n .replace('link', /\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/)\n .replace('precode-', supportsLookbehind ? '(?<!`)()' : '(^^|[^`])')\n .replace('code', /(?<b>`+)[^`]+\\k<b>(?!`)/)\n .replace('html', /<(?! )[^<>]*?>/)\n .getRegex();\n\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/;\n\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\nconst emStrongRDelimAstCore =\n '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n+ '|[^*]+(?=[^*])' // Consume to delim\n+ '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n+ '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n+ '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n+ '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n+ '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\n\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit(\n '^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n+ '|[^_]+(?=[^_])' // Consume to delim\n+ '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n+ '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n+ '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n+ '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n+ '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\n// Tilde left delimiter for strikethrough (similar to emStrongLDelim for asterisk)\nconst delLDelim = edit(/^~~?(?:((?!~)punct)|[^\\s~])/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\n// Tilde delimiter patterns for strikethrough (similar to asterisk)\nconst delRDelimCore =\n '^[^~]+(?=[^~])' // Consume to delim\n+ '|(?!~)punct(~~?)(?=[\\\\s]|$)' // (1) #~~ can only be a Right Delimiter\n+ '|notPunctSpace(~~?)(?!~)(?=punctSpace|$)' // (2) a~~#, a~~ can only be a Right Delimiter\n+ '|(?!~)punctSpace(~~?)(?=notPunctSpace)' // (3) #~~a, ~~a can only be Left Delimiter\n+ '|[\\\\s](~~?)(?!~)(?=punct)' // (4) ~~# can only be Left Delimiter\n+ '|(?!~)punct(~~?)(?!~)(?=punct)' // (5) #~~# can be either Left or Right Delimiter\n+ '|notPunctSpace(~~?)(?=notPunctSpace)'; // (6) a~~a can be either Left or Right Delimiter\n\nconst delRDelim = edit(delRDelimCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\n\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\n\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit(\n '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nconst _inlineLabel = /(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/;\n\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\n\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\n\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n\nconst _caseInsensitiveProtocol = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/;\n\n/**\n * Normal Inline Grammar\n */\n\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n delLDelim: noopTest,\n delRDelim: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n\ntype InlineKeys = keyof typeof inlineNormal;\n\n/**\n * Pedantic Inline Grammar\n */\n\nconst inlinePedantic: Record<InlineKeys, RegExp> = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n\n/**\n * GFM Inline Grammar\n */\n\nconst inlineGfm: Record<InlineKeys, RegExp> = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n delLDelim,\n delRDelim,\n url: edit(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/)\n .replace('protocol', _caseInsensitiveProtocol)\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: edit(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/)\n .replace('protocol', _caseInsensitiveProtocol)\n .getRegex(),\n};\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\nconst inlineBreaks: Record<InlineKeys, RegExp> = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex(),\n};\n\n/**\n * exports\n */\n\nexport const block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic,\n};\n\nexport const inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic,\n};\n\nexport interface Rules {\n other: typeof other\n block: Record<BlockKeys, RegExp>\n inline: Record<InlineKeys, RegExp>\n}\n", "import { other } from './rules.ts';\n\n/**\n * Helpers\n */\nconst escapeReplacements: { [index: string]: string } = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n};\nconst getEscapeReplacement = (ch: string) => escapeReplacements[ch];\n\nexport function escapeHtmlEntities(html: string, encode?: boolean) {\n if (encode) {\n if (other.escapeTest.test(html)) {\n return html.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html)) {\n return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nexport function cleanUrl(href: string) {\n try {\n href = encodeURI(href).replace(other.percentDecode, '%');\n } catch {\n return null;\n }\n return href;\n}\n\nexport function splitCells(tableRow: string, count?: number) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(other.splitPipe);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n }\n return cells;\n}\n\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str: string, c: string, invert?: boolean) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n}\n\nexport function trimTrailingBlankLines(str: string) {\n const lines = str.split('\\n');\n let end = lines.length - 1;\n while (end >= 0 && other.blankLine.test(lines[end])) {\n end--;\n }\n if (lines.length - end <= 2) {\n // we want to keep single trailing blank lines\n return str;\n }\n\n return lines.slice(0, end + 1).join('\\n');\n}\n\nexport function findClosingBracket(str: string, b: string) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n\n return -1;\n}\n\nexport function expandTabs(line: string, indent = 0) {\n let col = indent;\n let expanded = '';\n for (const char of line) {\n if (char === '\\t') {\n const added = 4 - (col % 4);\n expanded += ' '.repeat(added);\n col += added;\n } else {\n expanded += char;\n col++;\n }\n }\n\n return expanded;\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n rtrim,\n splitCells,\n findClosingBracket,\n expandTabs,\n trimTrailingBlankLines,\n} from './helpers.ts';\nimport type { Rules } from './rules.ts';\nimport type { _Lexer } from './Lexer.ts';\nimport type { Links, Tokens, Token } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\nfunction outputLink(cap: string[], link: Pick<Tokens.Link, 'href' | 'title'>, raw: string, lexer: _Lexer, rules: Rules): Tokens.Link | Tokens.Image {\n const href = link.href;\n const title = link.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n\n lexer.state.inLink = true;\n const token: Tokens.Link | Tokens.Image = {\n type: cap[0].charAt(0) === '!' ? 'image' : 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n}\n\nfunction indentCodeCompensation(raw: string, text: string, rules: Rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nexport class _Tokenizer<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n rules!: Rules; // set by the lexer\n lexer!: _Lexer<ParserOutput, RendererOutput>; // set by the lexer\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n space(src: string): Tokens.Space | undefined {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n\n code(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const raw = this.options.pedantic\n ? cap[0]\n : trimTrailingBlankLines(cap[0]);\n const text = raw.replace(this.rules.other.codeRemoveIndent, '');\n return {\n type: 'code',\n raw,\n codeBlockStyle: 'indented',\n text,\n };\n }\n }\n\n fences(src: string): Tokens.Code | undefined {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n\n heading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: rtrim(cap[0], '\\n'),\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n hr(src: string): Tokens.Hr | undefined {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n\n blockquote(src: string): Tokens.Blockquote | undefined {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens: Token[] = [];\n\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(this.rules.other.blockquoteSetextReplace, '\\n $1')\n .replace(this.rules.other.blockquoteSetextReplace2, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n\n const lastToken = tokens.at(-1);\n\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n } else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken as Tokens.Blockquote;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken as Tokens.List;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText)!;\n tokens[tokens.length - 1] = newToken;\n\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1)!.raw.length).split('\\n');\n continue;\n }\n }\n\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n\n list(src: string): Tokens.List | undefined {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list: Tokens.List = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n\n let line = expandTabs(cap[2].split('\\n', 1)[0], cap[1].length);\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = line.search(this.rules.other.nonSpaceChar); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n const blockquoteBeginRegex = this.rules.other.blockquoteBeginRegex(indent);\n\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, ' ');\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, ' ');\n }\n\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of blockquote\n if (blockquoteBeginRegex.test(nextLine)) {\n break;\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n } else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n\n // paragraph continuation unless last line was a different block level element\n if (line.replace(this.rules.other.tabCharGlobal, ' ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n\n itemContents += '\\n' + nextLine;\n }\n\n blankLine = !nextLine.trim();\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw,\n task: !!this.options.gfm && this.rules.other.listIsTask.test(itemContents),\n loose: false,\n text: itemContents,\n tokens: [],\n });\n\n list.raw += raw;\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n const lastItem = list.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n // not a list since there were no items\n return;\n }\n list.raw = list.raw.trimEnd();\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (const item of list.items) {\n this.lexer.state.top = false;\n item.tokens = this.lexer.blockTokens(item.text, []);\n const itemToken = item.tokens[0];\n if (item.task && (itemToken?.type === 'text' || itemToken?.type === 'paragraph')) {\n // Remove checkbox markdown from item tokens\n item.text = item.text.replace(this.rules.other.listReplaceTask, '');\n itemToken.raw = itemToken.raw.replace(this.rules.other.listReplaceTask, '');\n itemToken.text = itemToken.text.replace(this.rules.other.listReplaceTask, '');\n for (let i = this.lexer.inlineQueue.length - 1; i >= 0; i--) {\n if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[i].src)) {\n this.lexer.inlineQueue[i].src = this.lexer.inlineQueue[i].src.replace(this.rules.other.listReplaceTask, '');\n break;\n }\n }\n\n const taskRaw = this.rules.other.listTaskCheckbox.exec(item.raw);\n if (taskRaw) {\n const checkboxToken: Tokens.Checkbox = {\n type: 'checkbox',\n raw: taskRaw[0] + ' ',\n checked: taskRaw[0] !== '[ ]',\n };\n item.checked = checkboxToken.checked;\n if (list.loose) {\n if (item.tokens[0] && ['paragraph', 'text'].includes(item.tokens[0].type) && 'tokens' in item.tokens[0] && item.tokens[0].tokens) {\n item.tokens[0].raw = checkboxToken.raw + item.tokens[0].raw;\n item.tokens[0].text = checkboxToken.raw + item.tokens[0].text;\n item.tokens[0].tokens.unshift(checkboxToken);\n } else {\n item.tokens.unshift({\n type: 'paragraph',\n raw: checkboxToken.raw,\n text: checkboxToken.raw,\n tokens: [checkboxToken],\n });\n }\n } else {\n item.tokens.unshift(checkboxToken);\n }\n }\n } else if (item.task) {\n item.task = false;\n }\n\n if (!list.loose) {\n // Check if list should be loose\n const spacers = item.tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n\n list.loose = hasMultipleLineBreaks;\n }\n }\n\n // Set all items to loose if list is loose\n if (list.loose) {\n for (const item of list.items) {\n item.loose = true;\n for (const token of item.tokens) {\n if (token.type === 'text') {\n token.type = 'paragraph';\n }\n }\n }\n }\n\n return list;\n }\n }\n\n html(src: string): Tokens.HTML | undefined {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const raw = trimTrailingBlankLines(cap[0]);\n const token: Tokens.HTML = {\n type: 'html',\n block: true,\n raw,\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: raw,\n };\n return token;\n }\n }\n\n def(src: string): Tokens.Def | undefined {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: rtrim(cap[0], '\\n'),\n href,\n title,\n };\n }\n }\n\n table(src: string): Tokens.Table | undefined {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n\n const item: Tokens.Table = {\n type: 'table',\n raw: rtrim(cap[0], '\\n'),\n header: [],\n align: [],\n rows: [],\n };\n\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push('right');\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push('center');\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push('left');\n } else {\n item.align.push(null);\n }\n }\n\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n\n return item;\n }\n\n lheading(src: string): Tokens.Heading | undefined {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n const text = cap[1].trim();\n return {\n type: 'heading',\n raw: rtrim(cap[0], '\\n'),\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n paragraph(src: string): Tokens.Paragraph | undefined {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n\n text(src: string): Tokens.Text | undefined {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n\n escape(src: string): Tokens.Escape | undefined {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: cap[1],\n };\n }\n }\n\n tag(src: string): Tokens.Tag | undefined {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n\n link(src: string): Tokens.Link | Tokens.Image | undefined {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex === -2) {\n // more open parens than closed\n return;\n }\n\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = this.rules.other.pedanticHrefTitle.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer, this.rules);\n }\n }\n\n reflink(src: string, links: Links): Tokens.Link | Tokens.Image | Tokens.Text | undefined {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer, this.rules);\n }\n }\n\n emStrong(src: string, maskedSrc: string, prevChar = ''): Tokens.Em | Tokens.Strong | undefined {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n if (!match[1] && !match[2] && !match[3] && !match[4]) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[4] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n\n const nextChar = match[1] || match[3] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) !== null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = [...rDelim].length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n codespan(src: string): Tokens.Codespan | undefined {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n\n br(src: string): Tokens.Br | undefined {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n\n del(src: string, maskedSrc: string, prevChar = ''): Tokens.Del | undefined {\n let match = this.rules.inline.delLDelim.exec(src);\n if (!match) return;\n\n const nextChar = match[1] || '';\n\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength;\n\n const endReg = this.rules.inline.delRDelim;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) !== null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue;\n\n rLength = [...rDelim].length;\n\n if (rLength !== lLength) continue;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters\n rLength = Math.min(rLength, rLength + delimTotal);\n // char length can be >1 for unicode characters\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n\n // Create del token - only single ~ or double ~~ supported\n const text = raw.slice(lLength, -lLength);\n return {\n type: 'del',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n\n autolink(src: string): Tokens.Link | undefined {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[1];\n href = 'mailto:' + text;\n } else {\n text = cap[1];\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n url(src: string): Tokens.Link | undefined {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[0];\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n\n inlineText(src: string): Tokens.Text | undefined {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n escaped,\n };\n }\n }\n}\n", "import { _Tokenizer } from './Tokenizer.ts';\nimport { _defaults } from './defaults.ts';\nimport { other, block, inline } from './rules.ts';\nimport type { Token, TokensList, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Block Lexer\n */\nexport class _Lexer<ParserOutput = string, RendererOutput = string> {\n tokens: TokensList;\n options: MarkedOptions<ParserOutput, RendererOutput>;\n state: {\n inLink: boolean;\n inRawBlock: boolean;\n top: boolean;\n };\n\n public inlineQueue: { src: string, tokens: Token[] }[];\n\n private tokenizer: _Tokenizer<ParserOutput, RendererOutput>;\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n // TokenList cannot be created in one go\n this.tokens = [] as unknown as TokensList;\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true,\n };\n\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal,\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline,\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline<ParserOutput = string, RendererOutput = string>(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const lexer = new _Lexer<ParserOutput, RendererOutput>(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src: string) {\n src = src.replace(other.carriageReturn, '\\n');\n\n this.blockTokens(src, this.tokens);\n\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src: string, tokens?: Token[], lastParagraphClipped?: boolean): Token[];\n blockTokens(src: string, tokens?: TokensList, lastParagraphClipped?: boolean): TokensList;\n blockTokens(src: string, tokens: Token[] = [], lastParagraphClipped = false) {\n this.tokenizer.lexer = this;\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, ' ').replace(other.spaceLine, '');\n }\n\n let srcLength = Infinity;\n while (src) {\n if (src.length < srcLength) {\n srcLength = src.length;\n } else {\n this.infiniteLoopError(src.charCodeAt(0));\n break;\n }\n\n let token: Tokens.Generic | undefined;\n\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== undefined) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n lastToken.raw += '\\n';\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n tokens.push(token);\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += (lastToken.raw.endsWith('\\n') ? '' : '\\n') + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1)!.src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n this.infiniteLoopError(src.charCodeAt(0));\n break;\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src: string, tokens: Token[] = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src: string, tokens: Token[] = []): Token[] {\n this.tokenizer.lexer = this;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match: RegExpExecArray | null = null;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) !== null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index)\n + '[' + 'a'.repeat(match[0].length - 2) + ']'\n + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) !== null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n\n // Mask out other blocks\n let offset;\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) !== null) {\n offset = match[2] ? match[2].length : 0;\n maskedSrc = maskedSrc.slice(0, match.index + offset) + '[' + 'a'.repeat(match[0].length - offset - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out blocks from extensions\n maskedSrc = this.options.hooks?.emStrongMask?.call({ lexer: this }, maskedSrc) ?? maskedSrc;\n\n let keepPrevChar = false;\n let prevChar = '';\n let srcLength = Infinity;\n while (src) {\n if (src.length < srcLength) {\n srcLength = src.length;\n } else {\n this.infiniteLoopError(src.charCodeAt(0));\n break;\n }\n\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n let token: Tokens.Generic | undefined;\n\n // extensions\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === 'text' && lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n this.infiniteLoopError(src.charCodeAt(0));\n break;\n }\n }\n\n return tokens;\n }\n\n private infiniteLoopError(byte: number) {\n const errMsg = 'Infinite loop on byte: ' + byte;\n if (this.options.silent) {\n console.error(errMsg);\n } else {\n throw new Error(errMsg);\n }\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport {\n cleanUrl,\n escapeHtmlEntities,\n} from './helpers.ts';\nimport { other } from './rules.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Tokens } from './Tokens.ts';\nimport type { _Parser } from './Parser.ts';\n\n/**\n * Renderer\n */\nexport class _Renderer<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n parser!: _Parser<ParserOutput, RendererOutput>; // set by the parser\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n space(token: Tokens.Space): RendererOutput {\n return '' as RendererOutput;\n }\n\n code({ text, lang, escaped }: Tokens.Code): RendererOutput {\n const langString = (lang || '').match(other.notSpaceStart)?.[0];\n\n const code = text.replace(other.endingNewline, '') + '\\n';\n\n if (!langString) {\n return '<pre><code>'\n + (escaped ? code : escapeHtmlEntities(code, true))\n + '</code></pre>\\n' as RendererOutput;\n }\n\n return '<pre><code class=\"language-'\n + escapeHtmlEntities(langString)\n + '\">'\n + (escaped ? code : escapeHtmlEntities(code, true))\n + '</code></pre>\\n' as RendererOutput;\n }\n\n blockquote({ tokens }: Tokens.Blockquote): RendererOutput {\n const body = this.parser.parse(tokens);\n return `<blockquote>\\n${body}</blockquote>\\n` as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n def(token: Tokens.Def): RendererOutput {\n return '' as RendererOutput;\n }\n\n heading({ tokens, depth }: Tokens.Heading): RendererOutput {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n` as RendererOutput;\n }\n\n hr(token: Tokens.Hr): RendererOutput {\n return '<hr>\\n' as RendererOutput;\n }\n\n list(token: Tokens.List): RendererOutput {\n const ordered = token.ordered;\n const start = token.start;\n\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n' as RendererOutput;\n }\n\n listitem(item: Tokens.ListItem): RendererOutput {\n return `<li>${this.parser.parse(item.tokens)}</li>\\n` as RendererOutput;\n }\n\n checkbox({ checked }: Tokens.Checkbox): RendererOutput {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\"> ' as RendererOutput;\n }\n\n paragraph({ tokens }: Tokens.Paragraph): RendererOutput {\n return `<p>${this.parser.parseInline(tokens)}</p>\\n` as RendererOutput;\n }\n\n table(token: Tokens.Table): RendererOutput {\n let header = '';\n\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell as ParserOutput });\n\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n\n body += this.tablerow({ text: cell as ParserOutput });\n }\n if (body) body = `<tbody>${body}</tbody>`;\n\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n' as RendererOutput;\n }\n\n tablerow({ text }: Tokens.TableRow<ParserOutput>): RendererOutput {\n return `<tr>\\n${text}</tr>\\n` as RendererOutput;\n }\n\n tablecell(token: Tokens.TableCell): RendererOutput {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n` as RendererOutput;\n }\n\n /**\n * span level renderer\n */\n strong({ tokens }: Tokens.Strong): RendererOutput {\n return `<strong>${this.parser.parseInline(tokens)}</strong>` as RendererOutput;\n }\n\n em({ tokens }: Tokens.Em): RendererOutput {\n return `<em>${this.parser.parseInline(tokens)}</em>` as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return `<code>${escapeHtmlEntities(text, true)}</code>` as RendererOutput;\n }\n\n br(token: Tokens.Br): RendererOutput {\n return '<br>' as RendererOutput;\n }\n\n del({ tokens }: Tokens.Del): RendererOutput {\n return `<del>${this.parser.parseInline(tokens)}</del>` as RendererOutput;\n }\n\n link({ href, title, tokens }: Tokens.Link): RendererOutput {\n const text = this.parser.parseInline(tokens) as string;\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text as RendererOutput;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + (escapeHtmlEntities(title)) + '\"';\n }\n out += '>' + text + '</a>';\n return out as RendererOutput;\n }\n\n image({ href, title, text, tokens }: Tokens.Image): RendererOutput {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer) as string;\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escapeHtmlEntities(text) as RendererOutput;\n }\n href = cleanHref;\n\n let out = `<img src=\"${href}\" alt=\"${escapeHtmlEntities(text)}\"`;\n if (title) {\n out += ` title=\"${escapeHtmlEntities(title)}\"`;\n }\n out += '>';\n return out as RendererOutput;\n }\n\n text(token: Tokens.Text | Tokens.Escape): RendererOutput {\n return 'tokens' in token && token.tokens\n ? this.parser.parseInline(token.tokens) as unknown as RendererOutput\n : ('escaped' in token && token.escaped ? token.text as RendererOutput : escapeHtmlEntities(token.text) as RendererOutput);\n }\n}\n", "import type { Tokens } from './Tokens.ts';\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer<RendererOutput = string> {\n // no need for block level renderers\n strong({ text }: Tokens.Strong): RendererOutput {\n return text as RendererOutput;\n }\n\n em({ text }: Tokens.Em): RendererOutput {\n return text as RendererOutput;\n }\n\n codespan({ text }: Tokens.Codespan): RendererOutput {\n return text as RendererOutput;\n }\n\n del({ text }: Tokens.Del): RendererOutput {\n return text as RendererOutput;\n }\n\n html({ text }: Tokens.HTML | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n text({ text }: Tokens.Text | Tokens.Escape | Tokens.Tag): RendererOutput {\n return text as RendererOutput;\n }\n\n link({ text }: Tokens.Link): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n image({ text }: Tokens.Image): RendererOutput {\n return '' + text as RendererOutput;\n }\n\n br(): RendererOutput {\n return '' as RendererOutput;\n }\n\n checkbox({ raw }: Tokens.Checkbox): RendererOutput {\n return raw as RendererOutput;\n }\n}\n", "import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\nimport type { MarkedToken, Token, Tokens } from './Tokens.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\n\n/**\n * Parsing & Compiling\n */\nexport class _Parser<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n renderer: _Renderer<ParserOutput, RendererOutput>;\n textRenderer: _TextRenderer<RendererOutput>;\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer<ParserOutput, RendererOutput>();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer<RendererOutput>();\n }\n\n /**\n * Static Parse Method\n */\n static parse<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const parser = new _Parser<ParserOutput, RendererOutput>(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline<ParserOutput = string, RendererOutput = string>(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n const parser = new _Parser<ParserOutput, RendererOutput>(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens: Token[]): ParserOutput {\n this.renderer.parser = this;\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken as Tokens.Generic;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'def', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n break;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n break;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n break;\n }\n case 'code': {\n out += this.renderer.code(token);\n break;\n }\n case 'table': {\n out += this.renderer.table(token);\n break;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n break;\n }\n case 'list': {\n out += this.renderer.list(token);\n break;\n }\n case 'checkbox': {\n out += this.renderer.checkbox(token);\n break;\n }\n case 'html': {\n out += this.renderer.html(token);\n break;\n }\n case 'def': {\n out += this.renderer.def(token);\n break;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n break;\n }\n case 'text': {\n out += this.renderer.text(token);\n break;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out as ParserOutput;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens: Token[], renderer: _Renderer<ParserOutput, RendererOutput> | _TextRenderer<RendererOutput> = this.renderer): ParserOutput {\n this.renderer.parser = this;\n let out = '';\n\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n\n const token = anyToken as MarkedToken;\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'checkbox': {\n out += renderer.checkbox(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '' as ParserOutput;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out as ParserOutput;\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport type { MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\n\nexport class _Hooks<ParserOutput = string, RendererOutput = string> {\n options: MarkedOptions<ParserOutput, RendererOutput>;\n block?: boolean;\n\n constructor(options?: MarkedOptions<ParserOutput, RendererOutput>) {\n this.options = options || _defaults;\n }\n\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n 'emStrongMask',\n ]);\n\n static passThroughHooksRespectAsync = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n\n /**\n * Process markdown before marked\n */\n preprocess(markdown: string) {\n return markdown;\n }\n\n /**\n * Process HTML after marked is finished\n */\n postprocess(html: ParserOutput) {\n return html;\n }\n\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens: Token[] | TokensList) {\n return tokens;\n }\n\n /**\n * Mask contents that should not be interpreted as em/strong delimiters\n */\n emStrongMask(src: string) {\n return src;\n }\n\n /**\n * Provide function to tokenize markdown\n */\n provideLexer(block = this.block) {\n return block ? _Lexer.lex : _Lexer.lexInline;\n }\n\n /**\n * Provide function to parse tokens\n */\n provideParser(block = this.block) {\n return block ? _Parser.parse<ParserOutput, RendererOutput> : _Parser.parseInline<ParserOutput, RendererOutput>;\n }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escapeHtmlEntities } from './helpers.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, Tokens, TokensList } from './Tokens.ts';\n\nexport type MaybePromise = void | Promise<void>;\n\ntype UnknownFunction = (...args: unknown[]) => unknown;\ntype GenericRendererFunction = (...args: unknown[]) => string | false;\n\nexport class Marked<ParserOutput = string, RendererOutput = string> {\n defaults = _getDefaults<ParserOutput, RendererOutput>();\n options = this.setOptions;\n\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n\n Parser = _Parser<ParserOutput, RendererOutput>;\n Renderer = _Renderer<ParserOutput, RendererOutput>;\n TextRenderer = _TextRenderer<RendererOutput>;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer<ParserOutput, RendererOutput>;\n Hooks = _Hooks<ParserOutput, RendererOutput>;\n\n constructor(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n this.use(...args);\n }\n\n /**\n * Run callback for every token\n */\n walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n let values: MaybePromise[] = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token as Tokens.Table;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token as Tokens.List;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token as Tokens.Generic;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity) as Token[] | TokensList;\n values = values.concat(this.walkTokens(tokens, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n\n use(...args: MarkedExtension<ParserOutput, RendererOutput>[]) {\n const extensions: MarkedOptions<ParserOutput, RendererOutput>['extensions'] = this.defaults.extensions || { renderers: {}, childTokens: {} };\n\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack } as MarkedOptions<ParserOutput, RendererOutput>;\n\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer<ParserOutput, RendererOutput>(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop as Exclude<keyof _Renderer<ParserOutput, RendererOutput>, 'options' | 'parser'>;\n const rendererFunc = pack.renderer[rendererProp] as GenericRendererFunction;\n const prevRenderer = renderer[rendererProp] as GenericRendererFunction;\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args: unknown[]) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return (ret || '') as RendererOutput;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer<ParserOutput, RendererOutput>(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop as Exclude<keyof _Tokenizer<ParserOutput, RendererOutput>, 'options' | 'rules' | 'lexer'>;\n const tokenizerFunc = pack.tokenizer[tokenizerProp] as UnknownFunction;\n const prevTokenizer = tokenizer[tokenizerProp] as UnknownFunction;\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args: unknown[]) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks<ParserOutput, RendererOutput>();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop as Exclude<keyof _Hooks<ParserOutput, RendererOutput>, 'options' | 'block'>;\n const hooksFunc = pack.hooks[hooksProp] as UnknownFunction;\n const prevHook = hooks[hooksProp] as UnknownFunction;\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg: unknown) => {\n if (this.defaults.async && _Hooks.passThroughHooksRespectAsync.has(prop)) {\n return (async() => {\n const ret = await hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n })();\n }\n\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args: unknown[]) => {\n if (this.defaults.async) {\n return (async() => {\n let ret = await hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = await prevHook.apply(hooks, args);\n }\n return ret;\n })();\n }\n\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values: MaybePromise[] = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n\n this.defaults = { ...this.defaults, ...opts };\n });\n\n return this;\n }\n\n setOptions(opt: MarkedOptions<ParserOutput, RendererOutput>) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n\n lexer(src: string, options?: MarkedOptions<ParserOutput, RendererOutput>) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n\n parser(tokens: Token[], options?: MarkedOptions<ParserOutput, RendererOutput>) {\n return _Parser.parse<ParserOutput, RendererOutput>(tokens, options ?? this.defaults);\n }\n\n private parseMarkdown(blockType: boolean) {\n type overloadedParse = {\n (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: true }): Promise<ParserOutput>;\n (src: string, options: MarkedOptions<ParserOutput, RendererOutput> & { async: false }): ParserOutput;\n (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): ParserOutput | Promise<ParserOutput>;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse: overloadedParse = (src: string, options?: MarkedOptions<ParserOutput, RendererOutput> | null): any => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n\n const throwError = this.onError(!!opt.silent, !!opt.async);\n\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n\n if (opt.async) {\n return (async() => {\n const processedSrc = opt.hooks ? await opt.hooks.preprocess(src) : src;\n const lexer = opt.hooks ? await opt.hooks.provideLexer(blockType) : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const tokens = await lexer(processedSrc, opt);\n const processedTokens = opt.hooks ? await opt.hooks.processAllTokens(tokens) : tokens;\n if (opt.walkTokens) {\n await Promise.all(this.walkTokens(processedTokens, opt.walkTokens));\n }\n const parser = opt.hooks ? await opt.hooks.provideParser(blockType) : (blockType ? _Parser.parse : _Parser.parseInline);\n const html = await parser(processedTokens, opt);\n return opt.hooks ? await opt.hooks.postprocess(html) : html;\n })().catch(throwError);\n }\n\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src) as string;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer(blockType) : (blockType ? _Lexer.lex : _Lexer.lexInline);\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n const parser = opt.hooks ? opt.hooks.provideParser(blockType) : (blockType ? _Parser.parse : _Parser.parseInline);\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n } catch(e) {\n return throwError(e as Error);\n }\n };\n\n return parse;\n }\n\n private onError(silent: boolean, async: boolean) {\n return (e: Error): string | Promise<string> => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escapeHtmlEntities(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport {\n _getDefaults,\n changeDefaults,\n _defaults,\n} from './defaults.ts';\nimport type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';\nimport type { Token, TokensList } from './Tokens.ts';\nimport type { MaybePromise } from './Instance.ts';\n\nconst markedInstance = new Marked();\n\n/**\n * Compiles markdown to HTML asynchronously.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options, having async: true\n * @return Promise of string of compiled HTML\n */\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\n\n/**\n * Compiles markdown to HTML.\n *\n * @param src String of markdown source to be compiled\n * @param options Optional hash of options\n * @return String of compiled HTML. Will be a Promise of string if async is set to true by any extensions.\n */\nexport function marked(src: string, options: MarkedOptions & { async: false }): string;\nexport function marked(src: string, options: MarkedOptions & { async: true }): Promise<string>;\nexport function marked(src: string, options?: MarkedOptions | null): string | Promise<string>;\nexport function marked(src: string, opt?: MarkedOptions | null): string | Promise<string> {\n return markedInstance.parse(src, opt);\n}\n\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function(options: MarkedOptions) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\n\nmarked.defaults = _defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args: MarkedExtension[]) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {\n return markedInstance.walkTokens(tokens, callback);\n};\n\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\n\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\nexport type * from './MarkedOptions.ts';\nexport type * from './Tokens.ts';\n", "import DOMPurify from 'dompurify';\r\nimport { marked } from 'marked';\r\nimport React from 'react';\r\n\r\nmarked.setOptions({\r\n pedantic: false,\r\n gfm: true,\r\n});\r\n\r\n/** Renders sanitized Markdown text as HTML. */\r\nexport function Markdown({ text, className }: { text: string; className?: string }) {\r\n const html = React.useMemo(() => {\r\n if (!text) return '';\r\n const parsed = marked.parse(text, { async: false });\r\n return DOMPurify.sanitize(typeof parsed === 'string' ? parsed : '');\r\n }, [text]);\r\n\r\n return <div className={className} dangerouslySetInnerHTML={{ __html: html }} />;\r\n}\r\n", "import { TimeoutError } from 'ky';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { apiErrorMsg, normalizeTags } from '@/util';\r\n\r\nimport * as api from '../api';\r\nimport { app } from '../globals';\r\nimport { useTagSuggestions } from '../hooks/useTagSuggestions';\r\nimport { useBookmarksStore } from '../stores/bookmarksStore';\r\nimport { TagSuggestionsDropdown } from './TagSuggestionsDropdown';\r\n\r\ntype BulkAction = 'read' | 'unread' | 'star' | 'unstar' | 'delete' | 'private' | 'public';\r\ntype BulkSelection = 'page' | 'all';\r\n\r\ninterface Props {\r\n bcount: number;\r\n}\r\n\r\ntype BulkValidationKey =\r\n | 'bulkEdit.pleaseAddSelection'\r\n | 'bulkEdit.pleaseChooseAction'\r\n | 'bulkEdit.tooManyTags';\r\n\r\nfunction disabledReason(\r\n selection: BulkSelection | null,\r\n action: BulkAction | null,\r\n addTags: string,\r\n removeTags: string,\r\n bcount: number,\r\n): BulkValidationKey | null {\r\n if (selection === null) return 'bulkEdit.pleaseAddSelection';\r\n if (!action && !addTags.trim() && !removeTags.trim()) return 'bulkEdit.pleaseChooseAction';\r\n if (bcount > 20000 && addTags.trim().split(/\\s+/).filter(Boolean).length > 10)\r\n return 'bulkEdit.tooManyTags';\r\n return null;\r\n}\r\n\r\nfunction navLink<T>(current: T | null, value: T, label: string, onClick: (v: T) => void) {\r\n return (\r\n <a\r\n href=\"#\"\r\n className={`dib mt1 link${current === value ? ' nav-active' : ' silver hover-alt'}`}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n onClick(value);\r\n }}\r\n >\r\n {label}\r\n </a>\r\n );\r\n}\r\n\r\nexport function BulkEdit({ bcount }: Props) {\r\n const { t } = useTranslation();\r\n const [visible, setVisible] = useState(false);\r\n const [selection, setSelection] = useState<BulkSelection | null>(null);\r\n const [action, setAction] = useState<BulkAction | null>(null);\r\n const [addTags, setAddTags] = useState('');\r\n const [removeTags, setRemoveTags] = useState('');\r\n const [submitting, setSubmitting] = useState(false);\r\n const [confirmDelete, setConfirmDelete] = useState(false);\r\n const [confirmPublic, setConfirmPublic] = useState(false);\r\n const [validationMsg, setValidationMsg] = useState<string | null>(null);\r\n const [errorFadingOut, setErrorFadingOut] = useState(false);\r\n const validationTimer = useRef<number | null>(null);\r\n const fadeTimer = useRef<number | null>(null);\r\n\r\n const a = app();\r\n const suggestEnabled = a.dat.suggestTags === true;\r\n const suggestUseReturnKey = a.dat.suggestTagsUseReturnKey !== false;\r\n const bulkFilter = a.dat.filter ?? { tag: 'FilterAll' as const };\r\n const bulkSharedp = a.dat.sharedp ?? 'all';\r\n const bulkTags = a.dat.tags ?? [];\r\n const bulkQuery = a.dat.query ?? null;\r\n\r\n const bmarks = useBookmarksStore((s) => s.bmarks);\r\n const bids = bmarks.map((b) => b.bid);\r\n const pageCount = bids.length;\r\n const selectionCount = selection === null ? 0 : selection === 'page' ? pageCount : bcount;\r\n\r\n const reason = disabledReason(selection, action, addTags, removeTags, bcount);\r\n const isVisuallyDisabled = submitting || reason !== null || confirmDelete || confirmPublic;\r\n\r\n const {\r\n tagInputRef: removeTagsRef,\r\n suggestionState: removeSuggestionState,\r\n closeSuggestions: closeRemoveSuggestions,\r\n onTagsChange: onRemoveTagsChange,\r\n onTagsKeyDown: onRemoveTagsKeyDown,\r\n onTagsSelect: onRemoveTagsSelect,\r\n onSuggestionHover: onRemoveSuggestionHover,\r\n onSuggestionPick: onRemoveSuggestionPick,\r\n } = useTagSuggestions({\r\n enabled: suggestEnabled && action !== 'delete',\r\n useReturnKey: suggestUseReturnKey,\r\n tags: removeTags,\r\n onTagsUpdate: setRemoveTags,\r\n });\r\n\r\n const {\r\n tagInputRef: addTagsRef,\r\n suggestionState: addSuggestionState,\r\n closeSuggestions: closeAddSuggestions,\r\n onTagsChange: onAddTagsChange,\r\n onTagsKeyDown: onAddTagsKeyDown,\r\n onTagsSelect: onAddTagsSelect,\r\n onSuggestionHover: onAddSuggestionHover,\r\n onSuggestionPick: onAddSuggestionPick,\r\n } = useTagSuggestions({\r\n enabled: suggestEnabled && action !== 'delete',\r\n useReturnKey: suggestUseReturnKey,\r\n tags: addTags,\r\n onTagsUpdate: setAddTags,\r\n });\r\n\r\n const clearValidationTimers = () => {\r\n if (validationTimer.current !== null) {\r\n window.clearTimeout(validationTimer.current);\r\n validationTimer.current = null;\r\n }\r\n if (fadeTimer.current !== null) {\r\n window.clearTimeout(fadeTimer.current);\r\n fadeTimer.current = null;\r\n }\r\n };\r\n\r\n const resetForm = () => {\r\n setSelection(null);\r\n setAction(null);\r\n setAddTags('');\r\n setRemoveTags('');\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n clearValidationTimers();\r\n };\r\n\r\n useEffect(() => {\r\n const el = document.getElementById('bulk-edit-toggle');\r\n if (!el) return;\r\n const handler = (e: Event) => {\r\n e.preventDefault();\r\n resetForm();\r\n setVisible((v) => !v);\r\n };\r\n el.addEventListener('click', handler);\r\n return () => {\r\n el.removeEventListener('click', handler);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const el = document.getElementById('bulk-edit-toggle');\r\n if (!el) return;\r\n el.classList.toggle('nav-active', visible);\r\n el.classList.toggle('silver', !visible);\r\n }, [visible]);\r\n\r\n useEffect(() => {\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n }, [action, selection]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearValidationTimers();\r\n };\r\n }, []);\r\n\r\n const showValidationMsg = (msg: string) => {\r\n clearValidationTimers();\r\n setErrorFadingOut(false);\r\n setValidationMsg(msg);\r\n validationTimer.current = window.setTimeout(() => {\r\n validationTimer.current = null;\r\n setErrorFadingOut(true);\r\n fadeTimer.current = window.setTimeout(() => {\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n fadeTimer.current = null;\r\n }, 5000);\r\n }, 3000);\r\n };\r\n\r\n const handleSubmit = async (\r\n e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>,\r\n ): Promise<void> => {\r\n e.preventDefault();\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n\r\n const addTagsTrimmed = normalizeTags(addTags);\r\n const removeTagsTrimmed = normalizeTags(removeTags);\r\n const r = disabledReason(selection, action, addTagsTrimmed, removeTagsTrimmed, bcount);\r\n if (r !== null) {\r\n showValidationMsg(t(r));\r\n return;\r\n }\r\n if (action === 'delete' && !confirmDelete) {\r\n setConfirmDelete(true);\r\n return;\r\n }\r\n if (action === 'public' && !confirmPublic) {\r\n setConfirmPublic(true);\r\n return;\r\n }\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setSubmitting(true);\r\n try {\r\n if (selection === null) return;\r\n const res = await api.bulkEdit(\r\n selection === 'page'\r\n ? {\r\n selection: 'page',\r\n bids,\r\n action,\r\n addTags: addTagsTrimmed,\r\n removeTags: removeTagsTrimmed,\r\n selectionCount,\r\n }\r\n : {\r\n selection: 'all',\r\n filter: bulkFilter,\r\n sharedp: bulkSharedp,\r\n tags: bulkTags,\r\n query: bulkQuery,\r\n action,\r\n addTags: addTagsTrimmed,\r\n removeTags: removeTagsTrimmed,\r\n selectionCount,\r\n },\r\n );\r\n if (res.ok) {\r\n window.location.reload();\r\n } else {\r\n showValidationMsg(apiErrorMsg(t, res.status, res.bodyText ?? ''));\r\n }\r\n } catch (err) {\r\n if (err instanceof TimeoutError) {\r\n showValidationMsg(t('error.requestTimedOut'));\r\n } else {\r\n showValidationMsg(t('error.networkError'));\r\n }\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n if (!visible) return null;\r\n\r\n const toggleAction = (v: BulkAction) => {\r\n setAction((cur) => (cur === v ? null : v));\r\n if (v === 'delete') {\r\n setAddTags('');\r\n setRemoveTags('');\r\n }\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={(e) => {\r\n void handleSubmit(e);\r\n }}\r\n className=\"w-100 mw7 pa2 bulk_bookmark_form mt1\"\r\n >\r\n <div className=\"mb2\">\r\n <div>\r\n <span className=\"fw7\">{t('bulkEdit.select')}</span>\r\n {selection !== null && (\r\n <span className=\"ml2\">\r\n {selectionCount === 1\r\n ? t('bulkEdit.oneBookmarkSelected')\r\n : t('bulkEdit.bookmarksSelected', { count: selectionCount })}\r\n </span>\r\n )}\r\n </div>\r\n <div>\r\n {navLink(selection, 'page', t('bulkEdit.thisPage'), setSelection)}\r\n {' \u2027 '}\r\n {navLink(selection, 'all', t('bulkEdit.allPages'), setSelection)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mb2\">\r\n <div>\r\n <span className=\"fw7\">{t('bulkEdit.action')}</span>\r\n </div>\r\n <div>\r\n {navLink(action, 'private', t('bulkEdit.makePrivate'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'public', t('bulkEdit.makePublic'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'read', t('bulkEdit.markAsRead'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'unread', t('bulkEdit.unread'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'star', t('bulkEdit.addStars'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'unstar', t('bulkEdit.removeStars'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'delete', t('delete'), toggleAction)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mb2\">\r\n <div>\r\n <span className={`fw7${normalizeTags(removeTags) ? ' nav-active' : ''}`}>\r\n {t('bulkEdit.removeTags')}\r\n </span>\r\n </div>\r\n <div className=\"relative\">\r\n <input\r\n ref={removeTagsRef}\r\n type=\"text\"\r\n className={`tags w-100 mb1 pt1 edit_form_input${action === 'delete' ? ' o-50 not-allowed' : ''}`}\r\n disabled={action === 'delete'}\r\n autoComplete=\"off\"\r\n autoCapitalize=\"off\"\r\n value={removeTags}\r\n onChange={onRemoveTagsChange}\r\n onKeyDown={onRemoveTagsKeyDown}\r\n onClick={onRemoveTagsSelect}\r\n onSelect={onRemoveTagsSelect}\r\n onBlur={() => {\r\n window.setTimeout(() => {\r\n closeRemoveSuggestions();\r\n }, 0);\r\n }}\r\n />\r\n {removeSuggestionState != null ? (\r\n <TagSuggestionsDropdown\r\n suggestionState={removeSuggestionState}\r\n onHover={onRemoveSuggestionHover}\r\n onPick={onRemoveSuggestionPick}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mb2\">\r\n <div>\r\n <span className={`fw7${normalizeTags(addTags) ? ' nav-active' : ''}`}>\r\n {t('bulkEdit.addTags')}\r\n </span>\r\n </div>\r\n <div className=\"relative\">\r\n <input\r\n ref={addTagsRef}\r\n type=\"text\"\r\n className={`tags w-100 mb1 pt1 edit_form_input${action === 'delete' ? ' o-50 not-allowed' : ''}`}\r\n disabled={action === 'delete'}\r\n autoComplete=\"off\"\r\n autoCapitalize=\"off\"\r\n value={addTags}\r\n onChange={onAddTagsChange}\r\n onKeyDown={onAddTagsKeyDown}\r\n onClick={onAddTagsSelect}\r\n onSelect={onAddTagsSelect}\r\n onBlur={() => {\r\n window.setTimeout(() => {\r\n closeAddSuggestions();\r\n }, 0);\r\n }}\r\n />\r\n {addSuggestionState != null ? (\r\n <TagSuggestionsDropdown\r\n suggestionState={addSuggestionState}\r\n onHover={onAddSuggestionHover}\r\n onPick={onAddSuggestionPick}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex items-center\">\r\n <button\r\n type=\"submit\"\r\n disabled={submitting || confirmDelete || confirmPublic}\r\n className={`mr2 pv1 ph2 thm-text-primary ba thm-border-default rdim${isVisuallyDisabled ? ' thm-bg-disabled not-allowed' : ' thm-bg-secondary pointer'}`}\r\n onClick={() => {\r\n if (reason !== null) showValidationMsg(t(reason));\r\n }}\r\n >\r\n {submitting ? t('bulkEdit.submitting') : t('bulkEdit.submit')}\r\n </button>{' '}\r\n <button\r\n type=\"button\"\r\n className=\"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n onClick={() => {\r\n resetForm();\r\n setVisible(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {validationMsg != null && (\r\n <span\r\n className=\"thm-text-error f6 ml2\"\r\n style={{\r\n opacity: errorFadingOut ? 0 : 1,\r\n transition: errorFadingOut ? 'opacity 5s' : 'none',\r\n }}\r\n >\r\n {validationMsg}\r\n </span>\r\n )}\r\n {confirmDelete && (\r\n <span className=\"f6 ml2\">\r\n <span className=\"mr2\">\r\n {selectionCount === 1\r\n ? t('bulkEdit.destroyOne')\r\n : t('bulkEdit.destroyMany', { count: selectionCount })}\r\n </span>\r\n <span className=\"nowrap\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setConfirmDelete(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {' / '}\r\n <button type=\"submit\" className=\"thm-text-error\">\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </span>\r\n )}\r\n {confirmPublic && (\r\n <span className=\"f6 ml2\">\r\n <span className=\"mr2\">\r\n {selectionCount === 1\r\n ? t('bulkEdit.publicOne')\r\n : t('bulkEdit.publicMany', { count: selectionCount })}\r\n </span>\r\n <span className=\"nowrap\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setConfirmPublic(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {' / '}\r\n <button type=\"submit\" className=\"thm-text-error\">\r\n {t('bulkEdit.makePublic')}\r\n </button>\r\n </span>\r\n </span>\r\n )}\r\n </div>\r\n </form>\r\n );\r\n}\r\n", "import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { app, fromNow, shdatetime } from '../globals';\r\nimport type { Note } from '../types';\r\nimport { fromNullableStr } from '../util';\r\n\r\nfunction toTextareaPreview(input: string) {\r\n const lines = input.split('\\n');\r\n return (\r\n <>\r\n {lines[0]}\r\n {lines.slice(1).map((x, idx) => (\r\n <React.Fragment key={idx}>\r\n <br />\r\n {x}\r\n </React.Fragment>\r\n ))}\r\n </>\r\n );\r\n}\r\n\r\n/** Renders a list of note summaries with links to individual notes. */\r\nexport function NList({ initial }: { initial: Note[] }) {\r\n const { t } = useTranslation();\r\n const a = app();\r\n const previewNotes = a.dat.previewNotes !== false;\r\n const linkToFilterSingle = (slug: string) => `${fromNullableStr(a.userR)}/notes/${slug}`;\r\n\r\n return (\r\n <div>\r\n {initial.map((note) => {\r\n const fromNowVal = React.useMemo(\r\n () => fromNow(a.lang, note.created),\r\n [a.lang, note.created],\r\n );\r\n return (\r\n <div\r\n key={note.id}\r\n id={String(note.id)}\r\n className={`note w-100 mw7 pa1 mb2${note.shared ? '' : ' private'}`}\r\n >\r\n <div className=\"display\">\r\n <a href={linkToFilterSingle(note.slug)} className=\"link f5 lh-title\">\r\n {note.title === '' ? t('noTitle') : note.title}\r\n </a>\r\n <br />\r\n {previewNotes ? (\r\n <div className=\"description mt1 thm-text-secondary\">\r\n {toTextareaPreview(note.text.slice(0, 200))}\r\n </div>\r\n ) : null}\r\n <a\r\n className=\"link f7 dib thm-text-tertiary w4\"\r\n data-created={note.created}\r\n title={shdatetime(a.lang, note.created)}\r\n href={linkToFilterSingle(note.slug)}\r\n >\r\n {fromNowVal}\r\n </a>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n", "import { TimeoutError } from 'ky';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { destroyNote, editNote } from '../api';\r\nimport { app, closeWindow, fromNow, setFocus, shdatetime } from '../globals';\r\nimport type { Note } from '../types';\r\nimport { apiErrorMsg, curQuerystring, fromNullableStr, lookupQueryStringValue } from '../util';\r\nimport { Markdown } from './Markdown';\r\n\r\nfunction toTextarea(input: string) {\r\n const lines = input.split('\\n');\r\n return (\r\n <>\r\n {lines[0]}\r\n {lines.slice(1).map((x, idx) => (\r\n <React.Fragment key={idx}>\r\n <br />\r\n {x}\r\n </React.Fragment>\r\n ))}\r\n </>\r\n );\r\n}\r\n\r\n/** Displays a single note with inline editing and deletion, used in the popup window. */\r\nexport function NNote({ initial }: { initial: Note }) {\r\n const { t } = useTranslation();\r\n const a = app();\r\n\r\n const [note, setNote] = React.useState<Note>(initial);\r\n const [editNoteState, setEditNoteState] = React.useState<Note>(initial);\r\n const [deleteAsk, setDeleteAsk] = React.useState(false);\r\n const [edit, setEdit] = React.useState(initial.id <= 0);\r\n const [destroyed, setDestroyed] = React.useState(false);\r\n const [apiError, setApiError] = React.useState<string | null>(null);\r\n const fromNowVal = fromNow(a.lang, note.created);\r\n\r\n const notetextid = `${note.id.toString()}_text`;\r\n\r\n function startEdit(next: boolean) {\r\n setEditNoteState(note);\r\n setEdit(next);\r\n const qs = curQuerystring();\r\n const q = lookupQueryStringValue(qs, 'next');\r\n if (!next && q === 'closeWindow') closeWindow(window);\r\n else if (next) setFocus(notetextid);\r\n }\r\n\r\n async function onDestroy() {\r\n try {\r\n const res = await destroyNote(note.id);\r\n if (!res.ok) {\r\n setApiError(apiErrorMsg(t, res.status, res.bodyText));\r\n return;\r\n }\r\n setDestroyed(true);\r\n } catch (err) {\r\n setApiError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n }\r\n\r\n const onSubmit = async (e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>): Promise<void> => {\r\n e.preventDefault();\r\n setApiError(null);\r\n try {\r\n const res = await editNote(editNoteState);\r\n if (res.ok && res.status >= 200 && res.status < 300) {\r\n const qs = curQuerystring();\r\n const next = lookupQueryStringValue(qs, 'next');\r\n const ref = document.referrer;\r\n const org = window.location.origin;\r\n\r\n if (next === 'closeWindow') closeWindow(window);\r\n else if (next === 'back') {\r\n if (ref.startsWith(org)) window.location.href = ref;\r\n else window.location.href = org;\r\n } else if (editNoteState.id === 0) {\r\n window.location.href = fromNullableStr(a.noteR);\r\n } else {\r\n setNote(editNoteState);\r\n setEdit(false);\r\n }\r\n } else {\r\n setApiError(apiErrorMsg(t, res.status, res.bodyText));\r\n }\r\n } catch (err) {\r\n setApiError(\r\n err instanceof TimeoutError ? t('error.requestTimedOut') : t('error.networkError'),\r\n );\r\n }\r\n };\r\n\r\n if (destroyed) return <p className=\"thm-text-error\">{t('note.killed')}</p>;\r\n\r\n return (\r\n <div id={String(note.id)} className=\"note w-100 mw7 pa1 mb2\">\r\n {apiError ? <div className=\"alert alert-err mb2\">{apiError}</div> : null}\r\n {!edit ? (\r\n <>\r\n {a.dat.isowner ? (\r\n <div className=\"edit_links db mb3\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n startEdit(true);\r\n }}\r\n className=\"edit thm-text-muted thm-hover-link-color\"\r\n >\r\n {t('edit')} \r\n </button>\r\n </div>\r\n ) : null}\r\n\r\n <div className=\"display\">\r\n <div className=\"link f5 lh-title\">{note.title === '' ? t('noTitle') : note.title}</div>\r\n <br />\r\n {note.isMarkdown ? (\r\n <div className=\"description mt1\">\r\n <Markdown text={note.text} />\r\n </div>\r\n ) : (\r\n <div className=\"description mt1 thm-text-secondary\">{toTextarea(note.text)}</div>\r\n )}\r\n <div className=\"link f7 mt2 dib thm-text-tertiary w4\">\r\n <span data-created={note.created} title={shdatetime(a.lang, note.created)}>\r\n {fromNowVal}\r\n </span>\r\n {' - '}\r\n <span className=\"thm-text-tertiary\">\r\n {note.shared ? t('filter.public') : t('filter.private')}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n {a.dat.isowner ? (\r\n <div className=\"edit_links db mt3\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n startEdit(true);\r\n }}\r\n className=\"edit thm-text-muted thm-hover-link-color\"\r\n >\r\n {t('edit')} \r\n </button>\r\n <div className=\"delete_link di\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(true);\r\n }}\r\n className={`delete thm-text-muted thm-hover-link-color${deleteAsk ? ' dn' : ''}`}\r\n >\r\n {t('delete')}\r\n </button>\r\n <span className={`confirm thm-text-error${!deleteAsk ? ' dn' : ''}`}>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setDeleteAsk(false);\r\n }}\r\n >\r\n {t('cancel')} / \r\n </button>\r\n <button type=\"button\" onClick={() => void onDestroy()} className=\"thm-text-error\">\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </div>\r\n </div>\r\n ) : null}\r\n </>\r\n ) : (\r\n <form\r\n onSubmit={(e) => {\r\n void onSubmit(e);\r\n }}\r\n >\r\n <p className=\"mt2 mb1\">{t('note.titleLabel')}</p>\r\n <input\r\n type=\"text\"\r\n className=\"title w-100 mb1 pt1 edit_form_input\"\r\n name=\"title\"\r\n value={editNoteState.title}\r\n onChange={(e) => {\r\n setEditNoteState((x) => ({ ...x, title: e.target.value }));\r\n }}\r\n autoFocus={editNoteState.title === ''}\r\n />\r\n <br />\r\n <p className=\"mt2 mb1\">{t('note.descriptionLabel')}</p>\r\n <textarea\r\n id={notetextid}\r\n className=\"description w-100 mb1 pt1 edit_form_input\"\r\n name=\"text\"\r\n rows={25}\r\n value={editNoteState.text}\r\n onChange={(e) => {\r\n setEditNoteState((x) => ({ ...x, text: e.target.value }));\r\n }}\r\n />\r\n <div className=\"edit_form_checkboxes mb3\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"is-markdown pointer\"\r\n id=\"edit_ismarkdown\"\r\n name=\"ismarkdown\"\r\n checked={editNoteState.isMarkdown}\r\n onChange={(e) => {\r\n setEditNoteState((x) => ({ ...x, isMarkdown: e.target.checked }));\r\n }}\r\n />{' '}\r\n <label htmlFor=\"edit_ismarkdown\" className=\"mr2\">\r\n {t('note.useMarkdown')}\r\n </label>\r\n <br />\r\n </div>\r\n <div className=\"edit_form_checkboxes mb3\">\r\n <input\r\n type=\"checkbox\"\r\n className=\"is-markdown pointer\"\r\n id=\"edit_shared\"\r\n name=\"shared\"\r\n checked={editNoteState.shared}\r\n onChange={(e) => {\r\n setEditNoteState((x) => ({ ...x, shared: e.target.checked }));\r\n }}\r\n />{' '}\r\n <label htmlFor=\"edit_shared\" className=\"mr2\">\r\n {t('note.publicLabel')}\r\n </label>\r\n <br />\r\n </div>\r\n <input\r\n type=\"submit\"\r\n className=\"mr1 pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n value={t('save')}\r\n />{' '}\r\n <input\r\n type=\"reset\"\r\n className=\"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n value={t('cancel')}\r\n onClick={() => {\r\n startEdit(false);\r\n }}\r\n />\r\n </form>\r\n )}\r\n </div>\r\n );\r\n}\r\n", "import { TimeoutError } from 'ky';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { apiErrorMsg } from '@/util';\r\n\r\nimport * as api from '../api';\r\nimport { app } from '../globals';\r\nimport type { NoteBulkAction } from '../types';\r\n\r\ntype BulkSelection = 'page' | 'all';\r\n\r\ninterface Props {\r\n ncount: number;\r\n}\r\n\r\ntype BulkValidationKey = 'bulkEditNotes.pleaseAddSelection' | 'bulkEditNotes.pleaseChooseAction';\r\n\r\nfunction disabledReason(\r\n selection: BulkSelection | null,\r\n action: NoteBulkAction | null,\r\n): BulkValidationKey | null {\r\n if (selection === null) return 'bulkEditNotes.pleaseAddSelection';\r\n if (!action) return 'bulkEditNotes.pleaseChooseAction';\r\n return null;\r\n}\r\n\r\nfunction navLink<T>(current: T | null, value: T, label: string, onClick: (v: T) => void) {\r\n return (\r\n <a\r\n href=\"#\"\r\n className={`dib mt1 link${current === value ? ' nav-active' : ' silver hover-alt'}`}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n onClick(value);\r\n }}\r\n >\r\n {label}\r\n </a>\r\n );\r\n}\r\n\r\nexport function NoteBulkEdit({ ncount }: Props) {\r\n const { t } = useTranslation();\r\n const [visible, setVisible] = useState(false);\r\n const [selection, setSelection] = useState<BulkSelection | null>(null);\r\n const [action, setAction] = useState<NoteBulkAction | null>(null);\r\n const [submitting, setSubmitting] = useState(false);\r\n const [confirmDelete, setConfirmDelete] = useState(false);\r\n const [confirmPublic, setConfirmPublic] = useState(false);\r\n const [validationMsg, setValidationMsg] = useState<string | null>(null);\r\n const [errorFadingOut, setErrorFadingOut] = useState(false);\r\n const validationTimer = useRef<number | null>(null);\r\n const fadeTimer = useRef<number | null>(null);\r\n\r\n const a = app();\r\n const bulkQuery = a.dat.query ?? null;\r\n const bulkSharedp = a.dat.sharedp ?? 'all';\r\n\r\n const nids = (a.dat.notes ?? []).map((n) => n.id);\r\n const pageCount = nids.length;\r\n const selectionCount = selection === null ? 0 : selection === 'page' ? pageCount : ncount;\r\n\r\n const reason = disabledReason(selection, action);\r\n const isVisuallyDisabled = submitting || reason !== null || confirmDelete || confirmPublic;\r\n\r\n const clearValidationTimers = () => {\r\n if (validationTimer.current !== null) {\r\n window.clearTimeout(validationTimer.current);\r\n validationTimer.current = null;\r\n }\r\n if (fadeTimer.current !== null) {\r\n window.clearTimeout(fadeTimer.current);\r\n fadeTimer.current = null;\r\n }\r\n };\r\n\r\n const resetForm = () => {\r\n setSelection(null);\r\n setAction(null);\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n clearValidationTimers();\r\n };\r\n\r\n useEffect(() => {\r\n const el = document.getElementById('bulk-edit-toggle');\r\n if (!el) return;\r\n const handler = (e: Event) => {\r\n e.preventDefault();\r\n resetForm();\r\n setVisible((v) => !v);\r\n };\r\n el.addEventListener('click', handler);\r\n return () => {\r\n el.removeEventListener('click', handler);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const el = document.getElementById('bulk-edit-toggle');\r\n if (!el) return;\r\n el.classList.toggle('nav-active', visible);\r\n el.classList.toggle('silver', !visible);\r\n }, [visible]);\r\n\r\n useEffect(() => {\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n }, [action, selection]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearValidationTimers();\r\n };\r\n }, []);\r\n\r\n const showValidationMsg = (msg: string) => {\r\n clearValidationTimers();\r\n setErrorFadingOut(false);\r\n setValidationMsg(msg);\r\n validationTimer.current = window.setTimeout(() => {\r\n validationTimer.current = null;\r\n setErrorFadingOut(true);\r\n fadeTimer.current = window.setTimeout(() => {\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n fadeTimer.current = null;\r\n }, 5000);\r\n }, 3000);\r\n };\r\n\r\n const handleSubmit = async (\r\n e: React.SyntheticEvent<HTMLFormElement, SubmitEvent>,\r\n ): Promise<void> => {\r\n e.preventDefault();\r\n setValidationMsg(null);\r\n setErrorFadingOut(false);\r\n\r\n const r = disabledReason(selection, action);\r\n if (r !== null) {\r\n showValidationMsg(t(r));\r\n return;\r\n }\r\n if (action === 'delete' && !confirmDelete) {\r\n setConfirmDelete(true);\r\n return;\r\n }\r\n if (action === 'public' && !confirmPublic) {\r\n setConfirmPublic(true);\r\n return;\r\n }\r\n setConfirmDelete(false);\r\n setConfirmPublic(false);\r\n setSubmitting(true);\r\n try {\r\n if (selection === null || action === null) return;\r\n const res = await api.noteBulkEdit(\r\n selection === 'page'\r\n ? {\r\n selection: 'page',\r\n nids,\r\n action,\r\n selectionCount,\r\n }\r\n : {\r\n selection: 'all',\r\n sharedp: bulkSharedp,\r\n query: bulkQuery,\r\n action,\r\n selectionCount,\r\n },\r\n );\r\n if (res.ok) {\r\n window.location.reload();\r\n } else {\r\n showValidationMsg(apiErrorMsg(t, res.status, res.bodyText ?? ''));\r\n }\r\n } catch (err) {\r\n if (err instanceof TimeoutError) {\r\n showValidationMsg(t('error.requestTimedOut'));\r\n } else {\r\n showValidationMsg(t('error.networkError'));\r\n }\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n if (!visible) return null;\r\n\r\n const toggleAction = (v: NoteBulkAction) => {\r\n setAction((cur) => (cur === v ? null : v));\r\n };\r\n\r\n return (\r\n <form\r\n onSubmit={(e) => {\r\n void handleSubmit(e);\r\n }}\r\n className=\"w-100 mw7 pa2 bulk_bookmark_form mt1\"\r\n >\r\n <div className=\"mb2\">\r\n <div>\r\n <span className=\"fw7\">{t('bulkEdit.select')}</span>\r\n {selection !== null && (\r\n <span className=\"ml2\">\r\n {selectionCount === 1\r\n ? t('bulkEditNotes.oneNoteSelected')\r\n : t('bulkEditNotes.notesSelected', { count: selectionCount })}\r\n </span>\r\n )}\r\n </div>\r\n <div>\r\n {navLink(selection, 'page', t('bulkEdit.thisPage'), setSelection)}\r\n {' \u2027 '}\r\n {navLink(selection, 'all', t('bulkEdit.allPages'), setSelection)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mb2\">\r\n <div>\r\n <span className=\"fw7\">{t('bulkEdit.action')}</span>\r\n </div>\r\n <div>\r\n {navLink(action, 'private', t('bulkEdit.makePrivate'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'public', t('bulkEdit.makePublic'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'markdown', t('bulkEditNotes.useMarkdown'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'plaintext', t('bulkEditNotes.usePlaintext'), toggleAction)}\r\n {' \u2027 '}\r\n {navLink(action, 'delete', t('delete'), toggleAction)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex items-center\">\r\n <button\r\n type=\"submit\"\r\n disabled={submitting || confirmDelete || confirmPublic}\r\n className={`mr2 pv1 ph2 thm-text-primary ba thm-border-default rdim${isVisuallyDisabled ? ' thm-bg-disabled not-allowed' : ' thm-bg-secondary pointer'}`}\r\n onClick={() => {\r\n if (reason !== null) showValidationMsg(t(reason));\r\n }}\r\n >\r\n {submitting ? t('bulkEdit.submitting') : t('bulkEdit.submit')}\r\n </button>{' '}\r\n <button\r\n type=\"button\"\r\n className=\"pv1 ph2 thm-text-primary ba thm-border-default thm-bg-secondary pointer rdim\"\r\n onClick={() => {\r\n resetForm();\r\n setVisible(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {validationMsg != null && (\r\n <span\r\n className=\"thm-text-error f6 ml2\"\r\n style={{\r\n opacity: errorFadingOut ? 0 : 1,\r\n transition: errorFadingOut ? 'opacity 5s' : 'none',\r\n }}\r\n >\r\n {validationMsg}\r\n </span>\r\n )}\r\n {confirmDelete && (\r\n <span className=\"f6 ml2\">\r\n <span className=\"mr2\">\r\n {selectionCount === 1\r\n ? t('bulkEditNotes.destroyOne')\r\n : t('bulkEditNotes.destroyMany', { count: selectionCount })}\r\n </span>\r\n <span className=\"nowrap\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setConfirmDelete(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {' / '}\r\n <button type=\"submit\" className=\"thm-text-error\">\r\n {t('destroy')}\r\n </button>\r\n </span>\r\n </span>\r\n )}\r\n {confirmPublic && (\r\n <span className=\"f6 ml2\">\r\n <span className=\"mr2\">\r\n {selectionCount === 1\r\n ? t('bulkEditNotes.publicOne')\r\n : t('bulkEditNotes.publicMany', { count: selectionCount })}\r\n </span>\r\n <span className=\"nowrap\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setConfirmPublic(false);\r\n }}\r\n >\r\n {t('cancel')}\r\n </button>\r\n {' / '}\r\n <button type=\"submit\" className=\"thm-text-error\">\r\n {t('bulkEdit.makePublic')}\r\n </button>\r\n </span>\r\n </span>\r\n )}\r\n </div>\r\n </form>\r\n );\r\n}\r\n", "import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { getTagCloud, updateTagCloudMode } from '../api';\r\nimport { app } from '../globals';\r\nimport { useTagCloudStore } from '../stores/tagCloudStore';\r\nimport {\r\n isExpanded,\r\n setExpanded,\r\n type TagCloud,\r\n type TagCloudModeBrowse,\r\n type TagCloudModeF,\r\n tagCloudModeFromF,\r\n type TagCloudModeRelated,\r\n} from '../types';\r\nimport { encodeTag, fromNullableStr } from '../util';\r\n\r\n/** Displays the tag cloud, with controls to filter by top tags, frequency, or related tags. */\r\nexport function TagCloud({ initialMode }: { initialMode: TagCloudModeF }) {\r\n const { t } = useTranslation();\r\n const mode = useTagCloudStore((s) => s.mode);\r\n const tagcloud = useTagCloudStore((s) => s.tagcloud);\r\n const setMode = useTagCloudStore((s) => s.setMode);\r\n const setTagCloud = useTagCloudStore((s) => s.setTagCloud);\r\n\r\n React.useEffect(() => {\r\n setMode(initialMode);\r\n }, [initialMode]);\r\n\r\n React.useEffect(() => {\r\n async function fetchTagCloud(m: TagCloudModeF) {\r\n if (m.kind === 'none') return;\r\n const tc = await getTagCloud(tagCloudModeFromF(m));\r\n setTagCloud(tc ?? {});\r\n }\r\n void fetchTagCloud(mode);\r\n }, [mode, setTagCloud]);\r\n\r\n if (mode.kind === 'none') return <div className=\"tag_cloud\" />;\r\n\r\n const makeLbMode = (n: number): TagCloudModeBrowse => ({\r\n kind: 'lowerBound',\r\n expanded: isExpanded(mode),\r\n value: n,\r\n });\r\n\r\n const relatedTags =\r\n mode.kind === 'related' || mode.kind === 'relatedLowerBound' ? mode.value : [];\r\n const makeRelatedMode = (): TagCloudModeRelated => ({\r\n kind: 'related',\r\n expanded: isExpanded(mode),\r\n value: relatedTags,\r\n });\r\n const makeRelatedLbMode = (lb: number): TagCloudModeRelated => ({\r\n kind: 'relatedLowerBound',\r\n expanded: isExpanded(mode),\r\n value: relatedTags,\r\n lowerBound: lb,\r\n });\r\n\r\n async function onExpanded(expanded: boolean) {\r\n const next = setExpanded(mode, expanded);\r\n setMode(next);\r\n if (app().dat.isowner) {\r\n await updateTagCloudMode(tagCloudModeFromF(next));\r\n }\r\n }\r\n\r\n async function onChangeBrowse(next: TagCloudModeBrowse) {\r\n const isActive =\r\n (next.kind === 'top' && mode.kind === 'top') ||\r\n (next.kind === 'lowerBound' && mode.kind === 'lowerBound' && mode.value === next.value);\r\n if (isActive) {\r\n await onExpanded(!isExpanded(mode));\r\n } else {\r\n setMode(setExpanded(next, true));\r\n }\r\n }\r\n\r\n function onChangeRelated(next: TagCloudModeRelated) {\r\n const isActive =\r\n (next.kind === 'related' && mode.kind === 'related') ||\r\n (next.kind === 'relatedLowerBound' &&\r\n mode.kind === 'relatedLowerBound' &&\r\n mode.lowerBound === next.lowerBound);\r\n if (isActive) {\r\n void onExpanded(!isExpanded(mode));\r\n } else {\r\n setMode(setExpanded(next, true));\r\n }\r\n }\r\n\r\n const isTagCloudModeRelated = mode.kind === 'related' || mode.kind === 'relatedLowerBound';\r\n const activeLb = mode.kind === 'relatedLowerBound' ? mode.lowerBound : 0;\r\n\r\n return (\r\n <div className=\"tag_cloud mv3\">\r\n <div className=\"tag_cloud_header mb2\">\r\n {isTagCloudModeRelated ? (\r\n <>\r\n <button\r\n type=\"button\"\r\n className={`pa1 f7 link thm-hover-link-color mr1${mode.kind === 'related' ? ' b' : ''}`}\r\n title={t('tagCloud.topTagsTitle')}\r\n onClick={() => {\r\n onChangeRelated(makeRelatedMode());\r\n }}\r\n >\r\n {t('tagCloud.relatedTags')}\r\n </button>\r\n {(\r\n [\r\n [1, 'tagCloud.allTitle'],\r\n [2, 'tagCloud.min2Title'],\r\n [5, 'tagCloud.min5Title'],\r\n [10, 'tagCloud.min10Title'],\r\n [20, 'tagCloud.min20Title'],\r\n ] as const\r\n ).map(([lb, titleKey]) => (\r\n <React.Fragment key={lb}>\r\n {lb !== 1 && '\u2027'}\r\n <button\r\n type=\"button\"\r\n className={`pa1 f7 link thm-hover-link-color${lb === 1 ? ' ml2' : ''}${activeLb === lb ? ' b' : ''}`}\r\n title={t(titleKey)}\r\n onClick={() => {\r\n onChangeRelated(makeRelatedLbMode(lb));\r\n }}\r\n >\r\n {lb === 1 ? t('filter.all') : lb}\r\n </button>\r\n </React.Fragment>\r\n ))}\r\n </>\r\n ) : (\r\n <>\r\n <button\r\n type=\"button\"\r\n className={`pa1 f7 link thm-hover-link-color mr1${mode.kind === 'top' ? ' b' : ''}`}\r\n title={t('tagCloud.topTagsTitle')}\r\n onClick={() => void onChangeBrowse({ kind: 'top', expanded: isExpanded(mode) })}\r\n >\r\n {t('tagCloud.topTags')}\r\n </button>\r\n {(\r\n [\r\n [1, 'tagCloud.allTitle'],\r\n [2, 'tagCloud.min2Title'],\r\n [5, 'tagCloud.min5Title'],\r\n [10, 'tagCloud.min10Title'],\r\n [20, 'tagCloud.min20Title'],\r\n ] as const\r\n ).map(([n, titleKey]) => (\r\n <React.Fragment key={n}>\r\n {n !== 1 && '\u2027'}\r\n <button\r\n type=\"button\"\r\n className={`pa1 f7 link thm-hover-link-color${n === 1 ? ' ml2' : ''}${mode.kind === 'lowerBound' && mode.value === n ? ' b' : ''}`}\r\n title={t(titleKey)}\r\n onClick={() => void onChangeBrowse(makeLbMode(n))}\r\n >\r\n {n === 1 ? t('filter.all') : n}\r\n </button>\r\n </React.Fragment>\r\n ))}\r\n </>\r\n )}\r\n <button\r\n type=\"button\"\r\n className=\"pa1 ml2 f7 link thm-text-faded thm-hover-link-color\"\r\n onClick={() => void onExpanded(!isExpanded(mode))}\r\n >\r\n {isExpanded(mode) ? t('tagCloud.hide') : t('tagCloud.show')}\r\n </button>\r\n </div>\r\n\r\n {isExpanded(mode) ? (\r\n <div className=\"tag_cloud_body\">\r\n {renderLinks(isTagCloudModeRelated ? mode.value : [], tagcloud)}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderLinks(curtags: string[], tagcloud: TagCloud) {\r\n const a = app();\r\n const cur = curtags.map((tag) => tag.toLowerCase());\r\n\r\n const linkToFilterTag = (rest: string) =>\r\n `${fromNullableStr(a.userR)}${rest === '' ? '' : `/t:${rest}`}`;\r\n\r\n const tagCounts = Object.values(tagcloud);\r\n const cMin = tagCounts.length ? Math.min(...tagCounts) : 1;\r\n const cMax = tagCounts.length ? Math.max(...tagCounts) : 1;\r\n\r\n return Object.entries(tagcloud)\r\n .sort((x, y) => x[0].toLowerCase().localeCompare(y[0].toLowerCase()))\r\n .map(([tag, c]) => {\r\n const kLower = tag.toLowerCase();\r\n const fontsize = rescale((x) => Math.log(1.0 + x), c, cMin, cMax, 100.0, 133.0);\r\n const opacity = rescale((x) => Math.log(1.0 + x), c, cMin, cMax, 0.6, 1.0);\r\n const style: React.CSSProperties = { fontSize: `${fontsize.toString()}%`, opacity };\r\n\r\n const includeExcludeLink =\r\n cur.length === 0 ? null : !cur.includes(kLower) ? (\r\n <a\r\n href={linkToFilterTag(cur.concat([kLower]).map(encodeTag).join('+'))}\r\n className=\"link mr2 tag-include\"\r\n >\r\n \u2295\r\n </a>\r\n ) : (\r\n <a\r\n href={linkToFilterTag(\r\n cur\r\n .filter((t) => t !== kLower)\r\n .map(encodeTag)\r\n .join('+'),\r\n )}\r\n className=\"link mr2 tag-exclude\"\r\n >\r\n \u2296\r\n </a>\r\n );\r\n\r\n return (\r\n <React.Fragment key={tag}>\r\n <a href={linkToFilterTag(encodeTag(tag))} className=\"link tag mr1\" style={style}>\r\n {tag}\r\n </a>\r\n {includeExcludeLink}\r\n </React.Fragment>\r\n );\r\n });\r\n}\r\n\r\n/** Rescales a value v in the range [n, m] to a value in the range [l, h] using a function f.\r\n * @param f - The function to apply to the value.\r\n * @param v - The value to rescale.\r\n * @param n - The minimum of the input range.\r\n * @param m - The maximum of the input range.\r\n * @param l - The minimum of the output range.\r\n * @param h - The maximum of the output range.\r\n * @returns The rescaled value.\r\n */\r\nfunction rescale(\r\n f: (x: number) => number,\r\n v: number,\r\n n: number,\r\n m: number,\r\n l: number,\r\n h: number,\r\n): number {\r\n const denom = f(m - n);\r\n const ratio = m - n < 0.01 || denom === 0 ? 1.0 : f(v - n) / denom;\r\n return ratio * (h - l) + l;\r\n}\r\n", "import { create } from 'zustand';\n\nimport type { TagCloud, TagCloudModeF } from '../types';\n\nexport type TagCloudState = {\n mode: TagCloudModeF;\n tagcloud: TagCloud;\n setMode: (mode: TagCloudModeF) => void;\n setTagCloud: (tagcloud: TagCloud) => void;\n};\n\nexport const useTagCloudStore = create<TagCloudState>((set) => ({\n mode: { kind: 'none' },\n tagcloud: {},\n setMode: (mode) => {\n set({ mode });\n },\n setTagCloud: (tagcloud) => {\n set({ tagcloud });\n },\n}));\n", "/** User's preferred color scheme. */\r\nexport type ColorSchemePreference = 'light' | 'dark';\r\n\r\n/** Unique identifier for a bookmark. */\r\nexport type BookmarkId = number;\r\n\r\nexport type Bookmark = {\r\n /** The bookmarked URL. */\r\n url: string;\r\n /** Display title of the bookmark. */\r\n title: string;\r\n /** Optional user-provided description. */\r\n description: string;\r\n /** Space-separated list of tags. */\r\n tags: string;\r\n /** Whether the bookmark is private (not visible to others). */\r\n private: boolean;\r\n /** Whether the bookmark is marked for later reading. */\r\n toread: boolean;\r\n /** Whether the bookmark should be archived (request). */\r\n archiveRequested?: boolean | null;\r\n /** Database ID of the bookmark. */\r\n bid: BookmarkId;\r\n /** URL-friendly slug for the bookmark. */\r\n slug: string;\r\n /** Whether the bookmark is starred. */\r\n selected: boolean;\r\n /** ISO 8601 creation timestamp. */\r\n time: string;\r\n /** URL of the archived copy, or null if not archived. */\r\n archiveUrl: string | null;\r\n};\r\n\r\n/** Unique identifier for a note. */\r\nexport type NoteId = number;\r\n/** URL-friendly slug for a note. */\r\nexport type NoteSlug = string;\r\n\r\nexport type Note = {\r\n /** Database ID of the note. */\r\n id: NoteId;\r\n /** URL-friendly slug for the note. */\r\n slug: NoteSlug;\r\n /** Display title of the note. */\r\n title: string;\r\n /** Raw text content of the note. */\r\n text: string;\r\n /** Character length of the note text. */\r\n length: number;\r\n /** Whether the note body should be rendered as Markdown. */\r\n isMarkdown: boolean;\r\n /** Whether the note is publicly visible. */\r\n shared: boolean;\r\n /** ISO 8601 creation timestamp. */\r\n created: string;\r\n /** ISO 8601 last-updated timestamp. */\r\n updated: string;\r\n};\r\n\r\nexport type Filter =\r\n | { tag: 'FilterAll' }\r\n | { tag: 'FilterUnread' }\r\n | { tag: 'FilterUntagged' }\r\n | { tag: 'FilterStarred' }\r\n | { tag: 'FilterSingle'; contents: string };\r\n\r\nexport type AccountSettings = {\r\n /** Whether bookmarks are archived by default. */\r\n archiveDefault: boolean;\r\n /** Whether new bookmarks are private by default. */\r\n privateDefault: boolean;\r\n /** Whether tag suggestions are enabled. */\r\n suggestTags: boolean;\r\n /** Whether the Return key applies a tag suggestion (Tab always does). */\r\n suggestTagsUseReturnKey: boolean;\r\n /** Whether the account is locked to private-only mode. */\r\n privacyLock: boolean;\r\n /** Whether the tag cloud is visible to non-authenticated visitors. */\r\n publicTagCloud: boolean;\r\n /** Whether note listings show a text preview, or just the title. */\r\n previewNotes: boolean;\r\n /** Whether the archive backend is enabled. */\r\n archiveBackendEnabled: boolean;\r\n /** Whether the user currently has an API key set. */\r\n hasApiKey: boolean;\r\n /** The user's preferred language (null means server default). */\r\n language: string | null;\r\n};\r\n\r\n/** A single tag suggestion with its usage count. */\r\nexport type TSuggestion = {\r\n term: string;\r\n count: number;\r\n};\r\n\r\n/** Request payload for fetching tag suggestions based on a query and current tags. */\r\nexport type TagSuggestionRequest = {\r\n query: string;\r\n currentTags: string[];\r\n};\r\n\r\n/** Response payload containing a list of tag suggestions. */\r\nexport type TagSuggestionResponse = {\r\n suggestions: TSuggestion[];\r\n};\r\n\r\nexport type BulkAction = 'read' | 'unread' | 'star' | 'unstar' | 'delete' | 'private' | 'public';\r\nexport type SharedP = 'all' | 'public' | 'private';\r\n\r\ntype BulkEditRequestBase = {\r\n action: BulkAction | null;\r\n addTags: string;\r\n removeTags: string;\r\n selectionCount: number;\r\n};\r\n\r\nexport type BulkEditRequest =\r\n | (BulkEditRequestBase & { selection: 'page'; bids: number[] })\r\n | (BulkEditRequestBase & {\r\n selection: 'all';\r\n filter: Filter;\r\n sharedp: SharedP;\r\n tags: string[];\r\n query: string | null;\r\n });\r\n\r\nexport type BulkEditResponse = {\r\n ok: boolean;\r\n status: number;\r\n bodyText?: string;\r\n data?: { editedCount: number };\r\n};\r\n\r\nexport type NoteBulkAction = 'private' | 'public' | 'markdown' | 'plaintext' | 'delete';\r\n\r\ntype NoteBulkEditRequestBase = {\r\n action: NoteBulkAction;\r\n selectionCount: number;\r\n};\r\n\r\nexport type NoteBulkEditRequest =\r\n | (NoteBulkEditRequestBase & { selection: 'page'; nids: number[] })\r\n | (NoteBulkEditRequestBase & { selection: 'all'; sharedp: SharedP; query: string | null });\r\n\r\n/** Raw tag cloud mode as stored/sent by the server. */\r\nexport type TagCloudMode = {\r\n /** The mode name (e.g. 'top', 'lowerBound', 'related', 'none'). */\r\n mode: string;\r\n /** Mode-specific parameter value. */\r\n value: unknown;\r\n /** Whether the tag cloud panel is expanded. */\r\n expanded: boolean;\r\n /** Minimum bookmark count for related tags (only used in 'related' mode). */\r\n lowerBound?: number;\r\n};\r\n\r\n/** Map of tag name to usage count. */\r\nexport type TagCloud = Record<string, number>;\r\n\r\n/** Discriminated union representing the tag cloud filter mode. */\r\nexport type TagCloudModeF =\r\n | { kind: 'top'; expanded: boolean }\r\n | { kind: 'lowerBound'; expanded: boolean; value: number }\r\n | { kind: 'related'; expanded: boolean; value: string[] }\r\n | { kind: 'relatedLowerBound'; expanded: boolean; value: string[]; lowerBound: number }\r\n | { kind: 'none' };\r\n\r\nexport type TagCloudModeBrowse = Extract<TagCloudModeF, { kind: 'top' | 'lowerBound' }>;\r\nexport type TagCloudModeRelated = Extract<TagCloudModeF, { kind: 'related' | 'relatedLowerBound' }>;\r\n\r\nexport function tagCloudModeToF(mode: TagCloudMode): TagCloudModeF {\r\n switch (mode.mode) {\r\n case 'top':\r\n return { kind: 'top', expanded: mode.expanded };\r\n case 'lowerBound': {\r\n const n = typeof mode.value === 'number' ? mode.value : Number(mode.value);\r\n return Number.isFinite(n)\r\n ? { kind: 'lowerBound', expanded: mode.expanded, value: n }\r\n : { kind: 'none' };\r\n }\r\n case 'related': {\r\n const s = typeof mode.value === 'string' ? mode.value : '';\r\n const tags = s ? s.split(' ') : [];\r\n return { kind: 'related', expanded: mode.expanded, value: tags };\r\n }\r\n case 'relatedLowerBound': {\r\n const s = typeof mode.value === 'string' ? mode.value : '';\r\n const tags = s ? s.split(' ') : [];\r\n const lowerBound =\r\n typeof mode.lowerBound === 'number' && mode.lowerBound > 0 ? mode.lowerBound : 1;\r\n return { kind: 'relatedLowerBound', expanded: mode.expanded, value: tags, lowerBound };\r\n }\r\n default:\r\n return { kind: 'none' };\r\n }\r\n}\r\n\r\nexport function tagCloudModeFromF(mode: TagCloudModeF): TagCloudMode {\r\n switch (mode.kind) {\r\n case 'top':\r\n return { mode: 'top', value: null, expanded: mode.expanded };\r\n case 'lowerBound':\r\n return { mode: 'lowerBound', value: mode.value, expanded: mode.expanded };\r\n case 'related':\r\n return { mode: 'related', value: mode.value.join(' '), expanded: mode.expanded };\r\n case 'relatedLowerBound':\r\n return {\r\n mode: 'relatedLowerBound',\r\n value: mode.value.join(' '),\r\n expanded: mode.expanded,\r\n lowerBound: mode.lowerBound,\r\n };\r\n case 'none':\r\n return { mode: 'none', value: '', expanded: false };\r\n }\r\n}\r\n\r\nexport function isExpanded(mode: TagCloudModeF): boolean {\r\n return mode.kind === 'none' ? false : mode.expanded;\r\n}\r\n\r\nexport function setExpanded(mode: TagCloudModeF, expanded: boolean): TagCloudModeF {\r\n return mode.kind === 'none' ? mode : { ...mode, expanded };\r\n}\r\n"], - "mappings": "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cA,EAAY,MAAgBA,IAAT,MACpC4C,GACE5C,EACA+B,EACAY,CACF,EACG3C,EAAcA,EAAY,OACnC,CACA,SAAS4C,GACPtlC,EACAykC,EACAY,EACA,CACA,OAAQrlC,EAAM,IAAK,CACjB,IAAK,IACHolC,GACEplC,EACAykC,EACAY,CACF,EACArlC,EAAM,MAAQmlC,IACHnlC,EAAM,gBAAf,MACAulC,GACEF,EACAzC,GACA5iC,EAAM,cACNA,EAAM,aACR,EACF,MACF,IAAK,GACHolC,GACEplC,EACAykC,EACAY,CACF,EACA,MACF,IAAK,GACL,IAAK,GACH,IAAIG,EAAwB5C,GAC5BA,GAAuBS,GAAiBrjC,EAAM,UAAU,aAAa,EACrEolC,GACEplC,EACAykC,EACAY,CACF,EACAzC,GAAuB4C,EACvB,MACF,IAAK,IACMxlC,EAAM,gBAAf,OACIwlC,EAAwBxlC,EAAM,UACvBwlC,IAAT,MACSA,EAAsB,gBAA/B,MACMA,EAAwBL,GACzBA,GAAsB,SACvBC,GACEplC,EACAykC,EACAY,CACF,EACCF,GAAsBK,GACvBJ,GACEplC,EACAykC,EACAY,CACF,GACN,MACF,QACED,GACEplC,EACAykC,EACAY,CACF,CACJ,CACF,CACA,SAASI,GAAwB/C,EAAa,CAC5C,IAAIgD,EAAgBhD,EAAY,UAChC,GACWgD,IAAT,OACEhD,EAAcgD,EAAc,MAAiBhD,IAAT,MACtC,CACAgD,EAAc,MAAQ,KACtB,GACGA,EAAgBhD,EAAY,QAC1BA,EAAY,QAAU,KACtBA,EAAcgD,QACHhD,IAAT,KACT,CACF,CACA,SAASiD,GAAyCjD,EAAa,CAC7D,IAAInd,EAAYmd,EAAY,UAC5B,IAAWA,EAAY,MAAQ,MAA3B,EAAgC,CAClC,GAAand,IAAT,KACF,QAAS3lB,EAAI,EAAGA,EAAI2lB,EAAU,OAAQ3lB,IAAK,CACzC,IAAI0lB,EAAgBC,EAAU3lB,CAAC,EAC/BkgC,GAAaxa,EACbsgB,GACEtgB,EACAod,CACF,CACF,CACF+C,GAAwB/C,CAAW,CACrC,CACA,GAAIA,EAAY,aAAe,MAC7B,IAAKA,EAAcA,EAAY,MAAgBA,IAAT,MACpCmD,GAA4BnD,CAAW,EACpCA,EAAcA,EAAY,OACnC,CACA,SAASmD,GAA4B9H,EAAc,CACjD,OAAQA,EAAa,IAAK,CACxB,IAAK,GACL,IAAK,IACL,IAAK,IACH4H,GAAyC5H,CAAY,EACrDA,EAAa,MAAQ,MACnBI,GAA4B,EAAGJ,EAAcA,EAAa,MAAM,EAClE,MACF,IAAK,GACH4H,GAAyC5H,CAAY,EACrD,MACF,IAAK,IACH4H,GAAyC5H,CAAY,EACrD,MACF,IAAK,IACH,IAAIjf,EAAWif,EAAa,UACnBA,EAAa,gBAAtB,MACAjf,EAAS,YAAc,IACbif,EAAa,SAAtB,MAAuCA,EAAa,OAAO,MAA3B,KAC3Bjf,EAAS,aAAe,GAC1BgnB,GAA4C/H,CAAY,GACxD4H,GAAyC5H,CAAY,EACzD,MACF,QACE4H,GAAyC5H,CAAY,CACzD,CACF,CACA,SAAS+H,GAA4CpD,EAAa,CAChE,IAAInd,EAAYmd,EAAY,UAC5B,IAAWA,EAAY,MAAQ,MAA3B,EAAgC,CAClC,GAAand,IAAT,KACF,QAAS3lB,EAAI,EAAGA,EAAI2lB,EAAU,OAAQ3lB,IAAK,CACzC,IAAI0lB,EAAgBC,EAAU3lB,CAAC,EAC/BkgC,GAAaxa,EACbsgB,GACEtgB,EACAod,CACF,CACF,CACF+C,GAAwB/C,CAAW,CACrC,CACA,IAAKA,EAAcA,EAAY,MAAgBA,IAAT,MAAwB,CAE5D,OADAnd,EAAYmd,EACJnd,EAAU,IAAK,CACrB,IAAK,GACL,IAAK,IACL,IAAK,IACH4Y,GAA4B,EAAG5Y,EAAWA,EAAU,MAAM,EAC1DugB,GAA4CvgB,CAAS,EACrD,MACF,IAAK,IACH3lB,EAAI2lB,EAAU,UACd3lB,EAAE,YAAc,IACZA,EAAE,aAAe,GACnBkmC,GAA4CvgB,CAAS,GACvD,MACF,QACEugB,GAA4CvgB,CAAS,CACzD,CACAmd,EAAcA,EAAY,OAC5B,CACF,CACA,SAASkD,GACPG,EACAzH,EACA,CACA,KAAgBwB,KAAT,MAAuB,CAC5B,IAAI9/B,EAAQ8/B,GACZ,OAAQ9/B,EAAM,IAAK,CACjB,IAAK,GACL,IAAK,IACL,IAAK,IACHm+B,GAA4B,EAAGn+B,EAAOs+B,CAAsB,EAC5D,MACF,IAAK,IACL,IAAK,IACH,GACWt+B,EAAM,gBAAf,MACSA,EAAM,cAAc,YAA7B,KACA,CACA,IAAIgiB,EAAQhiB,EAAM,cAAc,UAAU,KAClCgiB,GAAR,MAAiBA,EAAM,UACzB,CACA,MACF,IAAK,IACHD,GAAa/hB,EAAM,cAAc,KAAK,CAC1C,CAEA,GADAgiB,EAAQhiB,EAAM,MACDgiB,IAAT,KAAiBA,EAAM,OAAShiB,EAAS8/B,GAAa9d,OAExDvhB,EAAG,IAAKT,EAAQ+lC,EAA6BjG,KAAT,MAAuB,CACzD9d,EAAQ8d,GACR,IAAIkG,EAAUhkB,EAAM,QAClBiD,EAAcjD,EAAM,OAEtB,GADAsf,GAAwBtf,CAAK,EACzBA,IAAUhiB,EAAO,CACnB8/B,GAAa,KACb,MAAMr/B,CACR,CACA,GAAaulC,IAAT,KAAkB,CACpBA,EAAQ,OAAS/gB,EACjB6a,GAAakG,EACb,MAAMvlC,CACR,CACAq/B,GAAa7a,CACf,CACJ,CACF,CACA,IAAIghB,GAAyB,CACzB,gBAAiB,SAAUC,EAAc,CACvC,IAAIlkB,EAAQb,GAAYU,EAAY,EAClCskB,EAAenkB,EAAM,KAAK,IAAIkkB,CAAY,EAC5C,OAAWC,IAAX,SACIA,EAAeD,EAAa,EAC9BlkB,EAAM,KAAK,IAAIkkB,EAAcC,CAAY,GACpCA,CACT,EACA,YAAa,UAAY,CACvB,OAAOhlB,GAAYU,EAAY,EAAE,WAAW,MAC9C,CACF,EACAukB,GAAiC,OAAO,SAAtB,WAAgC,QAAU,IAC5Dpe,GAAmB,EACnB3E,GAAqB,KACrBxd,GAAiB,KACjBwjB,GAAgC,EAChCgd,GAAgC,EAChCC,GAA4B,KAC5BC,GAA6C,GAC7CC,GAAmC,GACnCC,GAA0C,GAC1C3c,GAAuB,EACvB8N,GAA+B,EAC/BtO,GAAiC,EACjCod,GAA4C,EAC5CC,GAAgC,EAChCxM,GAA6B,EAC7BuC,GAAoC,EACpC3E,GAAqC,KACrClY,GAAsC,KACtC+mB,GAAoD,GACpDrD,GAA+B,EAC/BtgB,GAAiC,EACjCwa,GAAqC,IACrCoJ,GAA4B,KAC5BtP,GAAyC,KACzCuP,GAAuB,EACvBC,GAAqB,KACrBC,GAAsB,KACtBC,GAAsB,EACtBC,GAA+B,EAC/BC,GAA4B,KAC5BC,GAA2B,KAC3B9rB,GAAoB,EACpBC,GAAwB,KAC1B,SAAS2Y,IAAoB,CAC3B,OAAclM,GAAmB,KAA1B,GAAsCqB,KAAN,EACnCA,GAAgC,CAACA,GACxB3mB,EAAqB,IAA9B,KACE+f,GAAsB,EACtBjY,GAAsB,CAC9B,CACA,SAASkpB,IAAsB,CAC7B,GAAUyG,KAAN,EACF,IAAW9Q,GAAgC,aAAvC,GAAqDxa,GAAa,CACpE,IAAIpG,EAAOjB,GACXA,KAA+B,GACxBA,GAA6B,WAApC,IACGA,GAA6B,QAChC2yB,GAA6B1xB,CAC/B,MAAO0xB,GAA6B,UACtC,OAAA1xB,EAAOwhB,GAA2B,QACzBxhB,IAAT,OAAkBA,EAAK,OAAS,IACzB0xB,EACT,CACA,SAASzK,GAAsB5nB,EAAM9H,EAAOyI,EAAM,EAE7CX,IAASub,KACDgjB,KAAN,GACOA,KAAN,IACKv+B,EAAK,sBAAd,QAEAu/B,GAAkBv/B,EAAM,CAAC,EACvBw/B,GACEx/B,EACAuhB,GACA8Q,GACA,EACF,GACJpxB,GAAkBjB,EAAMW,CAAI,IACjBuf,GAAmB,KAA1B,GAAgClgB,IAASub,MAC3Cvb,IAASub,MACC2E,GAAmB,KAA1B,IACE0e,IAA6Cj+B,GAC1CmvB,KAAN,GACE0P,GACEx/B,EACAuhB,GACA8Q,GACA,EACF,GACFoN,GAAsBz/B,CAAI,EAChC,CACA,SAAS0/B,GAAkB/E,EAAe96B,EAAO8/B,EAAW,CAC1D,IAAWzf,GAAmB,KAA1B,EAA8B,MAAM,MAAMvoB,EAAuB,GAAG,CAAC,EACzE,IAAIioC,EACC,CAACD,IACO9/B,EAAQ,OAAf,IACOA,EAAQ86B,EAAc,gBAA7B,GACFn6B,GAA0Bm6B,EAAe96B,CAAK,EAChDggC,EAAaD,EACTE,GAAqBnF,EAAe96B,CAAK,EACzCkgC,GAAepF,EAAe96B,EAAO,EAAE,EAC3CmgC,EAAsBJ,EACxB,EAAG,CACD,GAAUC,IAAN,EAAkB,CACpBnB,IACE,CAACkB,GACDJ,GAAkB7E,EAAe96B,EAAO,EAAG,EAAE,EAC/C,KACF,KAAO,CAEL,GADA8/B,EAAYhF,EAAc,QAAQ,UAEhCqF,GACA,CAACC,GAAqCN,CAAS,EAC/C,CACAE,EAAaE,GAAepF,EAAe96B,EAAO,EAAE,EACpDmgC,EAAsB,GACtB,QACF,CACA,GAAUH,IAAN,EAAkB,CAEpB,GADAG,EAAsBngC,EAClB86B,EAAc,2BAA6BqF,EAC7C,IAAI9jC,EAA2B,OAE9BA,EAA2By+B,EAAc,aAAe,WACtDz+B,EACOA,IAAN,EACIA,EACAA,EAA2B,UACzB,UACA,EACZ,GAAUA,IAAN,EAAgC,CAClC2D,EAAQ3D,EACRvD,EAAG,CACD,IAAIqH,EAAO26B,EACXkF,EAAa5P,GACb,IAAIiQ,EAAoBlgC,EAAK,QAAQ,cAAc,aAQnD,GAPAkgC,IACGX,GAAkBv/B,EAAM9D,CAAwB,EAAE,OAAS,KAC9DA,EAA2B6jC,GACzB//B,EACA9D,EACA,EACF,EACUA,IAAN,EAAgC,CAClC,GACEyiC,IACA,CAACuB,EACD,CACAlgC,EAAK,4BAA8BggC,EACnCpB,IACEoB,EACFH,EAAa,EACb,MAAMlnC,CACR,CACAqnC,EAAsBjoB,GACtBA,GAAsC8nB,EAC7BG,IAAT,OACYjoB,KAAT,KACIA,GAAsCioB,EACvCjoB,GAAoC,KAAK,MACvCA,GACAioB,CACF,EACR,CACAH,EAAa3jC,CACf,CAEA,GADA8jC,EAAsB,GACZH,IAAN,EAAkB,QACxB,CACF,CACA,GAAUA,IAAN,EAAkB,CACpBN,GAAkB5E,EAAe,CAAC,EAClC6E,GAAkB7E,EAAe96B,EAAO,EAAG,EAAE,EAC7C,KACF,CACAlH,EAAG,CAGD,OAFAinC,EAAkBjF,EAClBqF,EAAsBH,EACdG,EAAqB,CAC3B,IAAK,GACL,IAAK,GACH,MAAM,MAAMroC,EAAuB,GAAG,CAAC,EACzC,IAAK,GACH,IAAKkI,EAAQ,WAAaA,EAAO,MACnC,IAAK,GACH2/B,GACEI,EACA//B,EACAwyB,GACA,CAACoM,EACH,EACA,MAAM9lC,EACR,IAAK,GACHof,GAAsC,KACtC,MACF,IAAK,GACL,IAAK,GACH,MACF,QACE,MAAM,MAAMpgB,EAAuB,GAAG,CAAC,CAC3C,CACA,IACGkI,EAAQ,YAAcA,IACrBggC,EAAapE,GAA+B,IAAMl9B,GAAI,EACxD,GAAKshC,GACL,CAOA,GANAL,GACEI,EACA//B,EACAwyB,GACA,CAACoM,EACH,EACU1+B,GAAa6/B,EAAiB,EAAG,EAAE,IAAzC,EAA4C,MAAMjnC,EACtDwmC,GAAsBt/B,EACtB+/B,EAAgB,cAAgBO,GAC9BC,GAAoB,KAClB,KACAR,EACAD,EACA5nB,GACAgnB,GACAD,GACAj/B,EACAwyB,GACAuM,GACAhK,GACA6J,GACAuB,EACA,YACA,GACA,CACF,EACAH,CACF,EACA,MAAMlnC,CACR,CACAynC,GACER,EACAD,EACA5nB,GACAgnB,GACAD,GACAj/B,EACAwyB,GACAuM,GACAhK,GACA6J,GACAuB,EACA,KACA,GACA,CACF,CACF,CACF,CACA,KACF,OAAS,IACTP,GAAsB9E,CAAa,CACrC,CACA,SAASyF,GACPpgC,EACAi2B,EACAoK,EACAC,EACAC,EACA1gC,EACAyB,EACAC,EACAC,EACAg/B,EACAX,EACAY,EACAC,EACAC,EACA,CAGA,GAFA3gC,EAAK,cAAgB,GACrBygC,EAAwBxK,EAAa,aAEnCwK,EAAwB,OACVA,EAAwB,YAAtC,SACA,CACAA,EAAwB,CACtB,YAAa,KACb,MAAO,EACP,SAAU,EACV,SAAU,EACV,gBAAiB,CAAC,EAClB,iBAAkB,GAClB,yBAA0B,GAC1B,UAAWh4B,EACb,EACA+0B,GACEvH,EACAp2B,EACA4gC,CACF,EACA,IAAIG,GACD/gC,EAAQ,YAAcA,EACnB47B,GAA+Bl9B,GAAI,GAClCsB,EAAQ,WAAaA,EACpBsb,GAAiC5c,GAAI,EACrC,EAKR,GAJAqiC,EAAgBC,GACdJ,EACAG,CACF,EACaA,IAAT,KAAwB,CAC1BzB,GAAsBt/B,EACtBG,EAAK,oBAAsB4gC,EA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AAgBrqB,CAAG,EACpC,MACF,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,OACKvR,GAAR,MACe,OAAOA,GAAtB,YACa,OAAOA,GAApB,UACA,CAAC,MAAMA,CAAK,GACZ,GAAKA,EACD47B,EAAW,aAAarqB,EAAKvR,CAAK,EAClC47B,EAAW,gBAAgBrqB,CAAG,EAClC,MACF,IAAK,UACL,IAAK,QACKvR,GAAR,MACe,OAAOA,GAAtB,YACa,OAAOA,GAApB,UACA,MAAMA,CAAK,EACP47B,EAAW,gBAAgBrqB,CAAG,EAC9BqqB,EAAW,aAAarqB,EAAKvR,CAAK,EACtC,MACF,IAAK,UACH2b,GAA0B,eAAgBigB,CAAU,EACpDjgB,GAA0B,SAAUigB,CAAU,EAC9ClyB,GAAqBkyB,EAAY,UAAW57B,CAAK,EACjD,MACF,IAAK,eACH6J,GACE+xB,EACA,+BACA,gBACA57B,CACF,EACA,MACF,IAAK,eACH6J,GACE+xB,EACA,+BACA,gBACA57B,CACF,EACA,MACF,IAAK,YACH6J,GACE+xB,EACA,+BACA,aACA57B,CACF,EACA,MACF,IAAK,YACH6J,GACE+xB,EACA,+BACA,aACA57B,CACF,EACA,MACF,IAAK,aACH6J,GACE+xB,EACA,+BACA,cACA57B,CACF,EACA,MACF,IAAK,YACH6J,GACE+xB,EACA,+BACA,aACA57B,CACF,EACA,MACF,IAAK,UACH6J,GACE+xB,EACA,uCACA,WACA57B,CACF,EACA,MACF,IAAK,UACH6J,GACE+xB,EACA,uCACA,WACA57B,CACF,EACA,MACF,IAAK,WACH6J,GACE+xB,EACA,uCACA,YACA57B,CACF,EACA,MACF,IAAK,KACH0J,GAAqBkyB,EAAY,KAAM57B,CAAK,EAC5C,MACF,IAAK,YACL,IAAK,cACH,MACF,SAEI,EAAE,EAAIuR,EAAI,SACDA,EAAI,CAAC,IAAb,KAA0BA,EAAI,CAAC,IAAb,KACVA,EAAI,CAAC,IAAb,KAA0BA,EAAI,CAAC,IAAb,OAElBA,EAAMvE,GAAQ,IAAIuE,CAAG,GAAKA,EACzB7H,GAAqBkyB,EAAYrqB,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AAK,OACL,IAAK,MACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,YACL,IAAK,OACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,cACL,IAAK,YACL,IAAK,aACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,SACL,IAAK,kBACL,IAAK,YACL,IAAK,mBACL,IAAK,iBACL,IAAK,oBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,OACL,IAAK,mBACL,IAAK,QACL,IAAK,aACL,IAAK,WACL,IAAK,SACL,IAAK,cACH,MAAO,GACT,IAAK,OACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACH,MAAO,GACT,IAAK,UACH,OAAQzP,GAAwB,EAAG,CACjC,KAAKC,GACH,MAAO,GACT,KAAKC,GACH,MAAO,GACT,KAAKC,GACL,KAAKC,GACH,MAAO,IACT,KAAKC,GACH,MAAO,WACT,QACE,MAAO,GACX,CACF,QACE,MAAO,GACX,CACF,CACA,IAAIuzC,GAA4B,GAC9BC,GAAc,KACdC,GAAa,KACbC,GAAc,KACdC,GAAiB,IAAI,IACrBC,GAAwB,IAAI,IAC5BC,GAAiC,CAAC,EAClCR,GACE,sPAAsP,MACpP,GACF,EACJ,SAASF,GAAuB/jC,EAAcrF,EAAa,CACzD,OAAQqF,EAAc,CACpB,IAAK,UACL,IAAK,WACHokC,GAAc,KACd,MACF,IAAK,YACL,IAAK,YACHC,GAAa,KACb,MACF,IAAK,YACL,IAAK,WACHC,GAAc,KACd,MACF,IAAK,cACL,IAAK,aACHC,GAAe,OAAO5pC,EAAY,SAAS,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AOjG,GAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KAAK,CACG,EAEGkG,GAAMlG,GAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OAAO,CACC,EAEGmG,GAAanG,GAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAAc,CACN,EAMGoG,GAAgBpG,GAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAAK,CACG,EAEGqG,GAASrG,GAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aAAa,CACL,EAIGsG,GAAmBtG,GAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAAM,CACE,EAEGuG,GAAOvG,GAAO,CAAC,OAAO,CAAU,EC1RhCiG,GAAOjG,GAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,OAAO,CACC,EAEGkG,GAAMlG,GAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,YAAY,CACJ,EAEGqG,GAASrG,GAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,OAAO,CACR,EAEYwG,GAAMxG,GAAO,CACxB,aACA,SACA,cACA,YACA,aAAa,CACL,ECvXGyG,GAAgBxG,GAAK,uBAAuB,EAC5CyG,GAAWzG,GAAK,uBAAuB,EACvC0G,GAAc1G,GAAK,aAA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", - "names": ["require_react_production", "__commonJSMin", "exports", "REACT_ELEMENT_TYPE", "REACT_PORTAL_TYPE", "REACT_FRAGMENT_TYPE", "REACT_STRICT_MODE_TYPE", "REACT_PROFILER_TYPE", "REACT_CONSUMER_TYPE", "REACT_CONTEXT_TYPE", "REACT_FORWARD_REF_TYPE", "REACT_SUSPENSE_TYPE", "REACT_MEMO_TYPE", "REACT_LAZY_TYPE", "REACT_ACTIVITY_TYPE", "MAYBE_ITERATOR_SYMBOL", "getIteratorFn", "maybeIterable", "ReactNoopUpdateQueue", "assign", "emptyObject", "Component", "props", "context", "updater", "partialState", "callback", "ComponentDummy", "PureComponent", "pureComponentPrototype", "isArrayImpl", "noop", "ReactSharedInternals", "hasOwnProperty", "ReactElement", "type", "key", "refProp", "cloneAndReplaceKey", "oldElement", "newKey", "isValidElement", "object", "escape", "escaperLookup", "match", "userProvidedKeyEscapeRegex", "getElementKey", "element", "index", "resolveThenable", "thenable", "fulfilledValue", "error", "mapIntoArray", "children", "array", "escapedPrefix", "nameSoFar", "invokeCallback", "c", "nextNamePrefix", "i", "mapChildren", "func", "result", "count", "child", "lazyInitializer", "payload", "ctor", "moduleObject", "reportGlobalError", "event", "Children", "forEachFunc", "forEachContext", "n", "size", "fn", "config", "propName", "childArray", "defaultValue", "childrenLength", "render", "compare", "scope", "prevTransition", "currentTransition", "returnValue", "onStartTransitionFinish", "usable", "action", "initialState", "permalink", "deps", "Context", "value", "initialValue", "create", "ref", "passthrough", "reducer", "initialArg", "init", "subscribe", "getSnapshot", "getServerSnapshot", "require_react", "__commonJSMin", "exports", "module", "require_void_elements", "__commonJSMin", "exports", "module", "require_use_sync_external_store_shim_production", "__commonJSMin", "exports", "React", "is", "x", "y", "objectIs", "useState", "useEffect", "useLayoutEffect", "useDebugValue", "useSyncExternalStore$2", "subscribe", "getSnapshot", "value", "_useState", "inst", "forceUpdate", "checkIfSnapshotChanged", "latestGetSnapshot", "nextValue", "error", "useSyncExternalStore$1", "shim", "require_shim", "__commonJSMin", "exports", "module", "require_scheduler_production", "__commonJSMin", "exports", "push", "heap", "node", "index", "a", "parentIndex", "parent", "compare", "peek", "pop", "first", "last", "length", "halfLength", "leftIndex", "left", "rightIndex", "right", "b", "diff", "localPerformance", "localDate", "initialTime", "taskQueue", "timerQueue", "taskIdCounter", "currentTask", "currentPriorityLevel", "isPerformingWork", "isHostCallbackScheduled", "isHostTimeoutScheduled", "needsPaint", "localSetTimeout", "localClearTimeout", "localSetImmediate", "advanceTimers", "currentTime", "timer", "handleTimeout", "isMessageLoopRunning", "schedulePerformWorkUntilDeadline", "firstTimer", "requestHostTimeout", "taskTimeoutID", "frameInterval", "startTime", "shouldYieldToHost", "performWorkUntilDeadline", "hasMoreWork", "previousPriorityLevel", "callback", "continuationCallback", "channel", "port", "ms", "task", "fps", "eventHandler", "priorityLevel", "options", "timeout", "parentPriorityLevel", "require_scheduler", "__commonJSMin", "exports", "module", "require_react_dom_production", "__commonJSMin", "exports", "React", "formatProdErrorMessage", "code", "url", "i", "noop", "Internals", "REACT_PORTAL_TYPE", "createPortal$1", "children", "containerInfo", "implementation", "key", "ReactSharedInternals", "getCrossOriginStringAs", "as", "input", "container", "fn", "previousTransition", "previousUpdatePriority", "href", "options", "crossOrigin", "integrity", "fetchPriority", "form", "a", "action", "initialState", "permalink", "require_react_dom", "__commonJSMin", "exports", "module", "checkDCE", "err", "require_react_dom_client_production", "__commonJSMin", "exports", "Scheduler", "React", "ReactDOM", "formatProdErrorMessage", "code", "url", "i", "isValidContainer", "node", "getNearestMountedFiber", "fiber", "nearestMounted", "getSuspenseInstanceFromFiber", "suspenseState", "getActivityInstanceFromFiber", "activityState", "assertIsMounted", "findCurrentFiberUsingSlowPath", "alternate", "a", "b", "parentA", "parentB", "didFindChild", "child$0", "findCurrentHostFiberImpl", "tag", "assign", "REACT_LEGACY_ELEMENT_TYPE", "REACT_ELEMENT_TYPE", "REACT_PORTAL_TYPE", "REACT_FRAGMENT_TYPE", "REACT_STRICT_MODE_TYPE", "REACT_PROFILER_TYPE", "REACT_CONSUMER_TYPE", "REACT_CONTEXT_TYPE", "REACT_FORWARD_REF_TYPE", "REACT_SUSPENSE_TYPE", "REACT_SUSPENSE_LIST_TYPE", "REACT_MEMO_TYPE", "REACT_LAZY_TYPE", "REACT_ACTIVITY_TYPE", "REACT_MEMO_CACHE_SENTINEL", "MAYBE_ITERATOR_SYMBOL", "getIteratorFn", "maybeIterable", "REACT_CLIENT_REFERENCE", "getComponentNameFromType", "type", "innerType", "x", "isArrayImpl", "ReactSharedInternals", "ReactDOMSharedInternals", "sharedNotPendingObject", "valueStack", "index", "createCursor", "defaultValue", "pop", "cursor", "push", "value", "contextStackCursor", "contextFiberStackCursor", "rootInstanceStackCursor", "hostTransitionProviderCursor", "pushHostContainer", "nextRootInstance", "getOwnHostContext", "getChildHostContextProd", "popHostContainer", "pushHostContext", "context", "JSCompiler_inline_result", "popHostContext", "HostTransitionContext", "prefix", "suffix", "describeBuiltInComponentFrame", "name", "match", "reentry", "describeNativeComponentFrame", "fn", "construct", "previousPrepareStackTrace", "RunInRootFrame", "Fake", "control", "x$1", "x$2", "sample", "namePropDescriptor", "_RunInRootFrame$Deter", "sampleStack", "controlStack", "sampleLines", "controlLines", "frame", "describeFiber", "childFiber", "getStackByFiberInDevAndProd", "workInProgress", "info", "previous", "hasOwnProperty", "scheduleCallback$3", "cancelCallback$1", "shouldYield", "requestPaint", "now", "getCurrentPriorityLevel", "ImmediatePriority", "UserBlockingPriority", "NormalPriority$1", "LowPriority", "IdlePriority", "log$1", "unstable_setDisableYieldValue", "rendererID", "injectedHook", "setIsStrictModeForDevtools", "newIsStrictMode", "err", "clz32", "clz32Fallback", "log", "LN2", "nextTransitionUpdateLane", "nextTransitionDeferredLane", "nextRetryLane", "getHighestPriorityLanes", "lanes", "pendingSyncLanes", "getNextLanes", "root", "wipLanes", "rootHasPendingCommit", "pendingLanes", "nextLanes", "suspendedLanes", "pingedLanes", "nonIdlePendingLanes", "checkIfRootIsPrerendering", "renderLanes", "computeExpirationTime", "lane", "currentTime", "claimNextRetryLane", "createLaneMap", "initial", "laneMap", "markRootUpdated$1", "updateLane", "markRootFinished", "finishedLanes", "remainingLanes", "spawnedLane", "updatedLanes", "suspendedRetryLanes", "previouslyPendingLanes", "entanglements", "expirationTimes", "hiddenUpdates", "index$7", "hiddenUpdatesForLane", "update", "markSpawnedDeferredLane", "entangledLanes", "spawnedLaneIndex", "markRootEntangled", "rootEntangledLanes", "index$8", "getBumpedLaneForHydration", "renderLane", "getBumpedLaneForHydrationByLane", "lanesToEventPriority", "resolveUpdatePriority", "updatePriority", "getEventPriority", "runWithPriority", "priority", "previousPriority", "randomKey", "internalInstanceKey", "internalPropsKey", "internalContainerInstanceKey", "internalEventHandlersKey", "internalEventHandlerListenersKey", "internalEventHandlesSetKey", "internalRootNodeResourcesKey", "internalHoistableMarker", "detachDeletedInstance", "getClosestInstanceFromNode", "targetNode", "targetInst", "parentNode", "getParentHydrationBoundary", "getInstanceFromNode", "getNodeFromInstance", "inst", "getResourcesFromRoot", "resources", "markNodeAsHoistable", "allNativeEvents", "registrationNameDependencies", "registerTwoPhaseEvent", "registrationName", "dependencies", "registerDirectEvent", "VALID_ATTRIBUTE_NAME_REGEX", "illegalAttributeNameCache", "validatedAttributeNameCache", "isAttributeNameSafe", "attributeName", "setValueForAttribute", "prefix$10", "setValueForKnownAttribute", "setValueForNamespacedAttribute", "namespace", "getToStringValue", "isCheckable", "elem", "trackValueOnNode", "valueField", "currentValue", "descriptor", "get", "set", "track", "updateValueIfChanged", "tracker", "lastValue", "getActiveElement", "doc", "e", "escapeSelectorAttributeValueInsideDoubleQuotesRegex", "escapeSelectorAttributeValueInsideDoubleQuotes", "ch", "updateInput", "element", "lastDefaultValue", "checked", "defaultChecked", "setDefaultValue", "initInput", "isHydrating", "updateOptions", "multiple", "propValue", "setDefaultSelected", "updateTextarea", "initTextarea", "children", "setTextContent", "text", "firstChild", "unitlessNumbers", "setValueForStyle", "style", "styleName", "isCustomProperty", "setValueForStyles", "styles", "prevStyles", "styleName$16", "styleName$17", "isCustomElement", "tagName", "aliases", "isJavaScriptProtocol", "sanitizeURL", "noop$1", "currentReplayingEvent", "getEventTarget", "nativeEvent", "restoreTarget", "restoreQueue", "restoreStateOfTarget", "target", "internalInstance", "props", "otherNode", "otherProps", "isInsideEventHandler", "batchedUpdates$1", "flushSyncWork$1", "getListener", "stateNode", "canUseDOM", "passiveBrowserEventsSupported", "options", "startText", "fallbackText", "getData", "start", "startValue", "startLength", "end", "endValue", "endLength", "minEnd", "getEventCharCode", "keyCode", "functionThatReturnsTrue", "functionThatReturnsFalse", "createSyntheticEvent", "Interface", "SyntheticBaseEvent", "reactName", "reactEventType", "nativeEventTarget", "propName", "event", "EventInterface", "SyntheticEvent", "UIEventInterface", "SyntheticUIEvent", "lastMovementX", "lastMovementY", "lastMouseEvent", "MouseEventInterface", "getEventModifierState", "SyntheticMouseEvent", "DragEventInterface", "SyntheticDragEvent", "FocusEventInterface", "SyntheticFocusEvent", "AnimationEventInterface", "SyntheticAnimationEvent", "ClipboardEventInterface", "SyntheticClipboardEvent", "CompositionEventInterface", "SyntheticCompositionEvent", "normalizeKey", "translateToKey", "modifierKeyToProp", "modifierStateGetter", "keyArg", "KeyboardEventInterface", "key", "SyntheticKeyboardEvent", "PointerEventInterface", "SyntheticPointerEvent", "TouchEventInterface", "SyntheticTouchEvent", "TransitionEventInterface", "SyntheticTransitionEvent", "WheelEventInterface", "SyntheticWheelEvent", "ToggleEventInterface", "SyntheticToggleEvent", "END_KEYCODES", "canUseCompositionEvent", "documentMode", "canUseTextInputEvent", "useFallbackCompositionData", "SPACEBAR_CHAR", "hasSpaceKeypress", "isFallbackCompositionEnd", "domEventName", "getDataFromCustomEvent", "isComposing", "getNativeBeforeInputChars", "getFallbackBeforeInputChars", "supportedInputTypes", "isTextInputElement", "nodeName", "createAndAccumulateChangeEvent", "dispatchQueue", "accumulateTwoPhaseListeners", "activeElement$1", "activeElementInst$1", "runEventInBatch", "processDispatchQueue", "getInstIfValueChanged", "getTargetInstForChangeEvent", "isInputEventSupported", "isSupported$jscomp$inline_427", "element$jscomp$inline_428", "JSCompiler_inline_result$jscomp$286", "stopWatchingForValueChange", "handlePropertyChange", "handleEventsForInputEventPolyfill", "getTargetInstForInputEventPolyfill", "getTargetInstForClickEvent", "getTargetInstForInputOrChangeEvent", "is", "y", "objectIs", "shallowEqual", "objA", "objB", "keysA", "keysB", "currentKey", "getLeafNode", "getNodeForCharacterOffset", "offset", "nodeEnd", "containsNode", "outerNode", "innerNode", "getActiveElementDeep", "containerInfo", "hasSelectionCapabilities", "skipSelectionChangeEvent", "activeElement", "activeElementInst", "lastSelection", "mouseDown", "constructSelectEvent", "makePrefixMap", "styleProp", "eventName", "prefixes", "vendorPrefixes", "prefixedEventNames", "getVendorPrefixedEventName", "prefixMap", "ANIMATION_END", "ANIMATION_ITERATION", "ANIMATION_START", "TRANSITION_RUN", "TRANSITION_START", "TRANSITION_CANCEL", "TRANSITION_END", "topLevelEventsToReactNames", "simpleEventPluginEvents", "registerSimpleEvent", "reportGlobalError", "error", "concurrentQueues", "concurrentQueuesIndex", "concurrentlyUpdatedLanes", "finishQueueingConcurrentUpdates", "endIndex", "queue", "pending", "markUpdateLaneFromFiberToRoot", "enqueueUpdate$1", "enqueueConcurrentHookUpdate", "getRootForUpdatedFiber", "enqueueConcurrentRenderForLane", "sourceFiber", "isHidden", "parent", "nestedUpdateCount", "rootWithNestedUpdates", "emptyContextObject", "FiberNode", "pendingProps", "mode", "createFiberImplClass", "shouldConstruct", "Component", "createWorkInProgress", "current", "resetWorkInProgress", "createFiberFromTypeAndProps", "owner", "fiberTag", "isHostHoistableType", "createFiberFromFragment", "elements", "createFiberFromText", "content", "createFiberFromDehydratedFragment", "dehydratedNode", "createFiberFromPortal", "portal", "CapturedStacks", "createCapturedValueAtFiber", "source", "existing", "forkStack", "forkStackIndex", "treeForkProvider", "treeForkCount", "idStack", "idStackIndex", "treeContextProvider", "treeContextId", "treeContextOverflow", "pushTreeFork", "totalChildren", "pushTreeId", "baseIdWithLeadingBit", "baseLength", "length", "numberOfOverflowBits", "pushMaterializedTreeId", "popTreeContext", "restoreSuspendedTreeContext", "suspendedContext", "hydrationParentFiber", "nextHydratableInstance", "hydrationErrors", "rootOrSingletonContext", "HydrationMismatchException", "throwOnHydrationMismatch", "queueHydrationError", "prepareToHydrateHostInstance", "instance", "listenToNonDelegatedEvent", "mediaEventTypes", "checkForUnmatchedText", "popToNextHostParent", "popHydrationState", "JSCompiler_temp", "shouldSetTextContent", "getNextHydratableInstanceAfterHydrationBoundary", "isSingletonScope", "previousHydratableOnEnteringScopedSingleton", "getNextHydratable", "resetHydrationState", "upgradeHydrationErrorsToRecoverable", "queuedErrors", "workInProgressRootRecoverableErrors", "valueCursor", "currentlyRenderingFiber$1", "lastContextDependency", "pushProvider", "providerFiber", "nextValue", "popProvider", "scheduleContextWorkOnParentPath", "propagationRoot", "propagateContextChanges", "contexts", "forcePropagateEntireTree", "list", "nextFiber", "dependency", "propagateParentContextChanges", "isInsidePropagationBailout", "currentParent", "checkIfContextChanged", "currentDependencies", "prepareToReadContext", "readContext", "readContextForConsumer", "readContextDuringReconciliation", "consumer", "AbortControllerLocal", "listeners", "signal", "listener", "scheduleCallback$2", "NormalPriority", "CacheContext", "createCache", "releaseCache", "cache", "currentEntangledListeners", "currentEntangledPendingCount", "currentEntangledLane", "currentEntangledActionThenable", "entangleAsyncAction", "transition", "thenable", "entangledListeners", "requestTransitionLane", "resolve", "pingEngtangledActionScope", "chainThenableValue", "result", "thenableWithOverride", "prevOnStartTransitionFinish", "returnValue", "globalMostRecentTransitionTime", "resumedCache", "peekCacheFromPool", "cacheResumedFromPreviousRender", "workInProgressRoot", "pushTransition", "offscreenWorkInProgress", "prevCachePool", "getSuspendedCache", "cacheFromPool", "SuspenseException", "SuspenseyCommitException", "SuspenseActionException", "noopSuspenseyCommitThenable", "isThenableResolved", "trackUsedThenable", "thenableState", "checkIfUseWrappedInAsyncCatch", "fulfilledValue", "fulfilledThenable", "rejectedThenable", "suspendedThenable", "resolveLazy", "lazyType", "init", "getSuspendedThenable", "rejectedReason", "thenableState$1", "thenableIndexCounter$1", "unwrapThenable", "coerceRef", "throwOnInvalidObjectTypeImpl", "returnFiber", "newChild", "createChildReconciler", "shouldTrackSideEffects", "deleteChild", "childToDelete", "deletions", "deleteRemainingChildren", "currentFirstChild", "mapRemainingChildren", "existingChildren", "useFiber", "placeChild", "newFiber", "lastPlacedIndex", "newIndex", "placeSingleChild", "updateTextNode", "textContent", "updateElement", "elementType", "updateFragment", "updatePortal", "fragment", "createChild", "updateSlot", "oldFiber", "updateFromMap", "newIdx", "reconcileChildrenArray", "newChildren", "resultingFirstChild", "previousNewFiber", "nextOldFiber", "child", "reconcileChildrenIterator", "step", "reconcileChildFibersImpl", "firstChildFiber", "reconcileChildFibers", "mountChildFibers", "hasForceUpdate", "initializeUpdateQueue", "cloneUpdateQueue", "createUpdate", "enqueueUpdate", "updateQueue", "executionContext", "entangleTransitions", "queueLanes", "enqueueCapturedUpdate", "capturedUpdate", "newFirst", "newLast", "clone", "didReadFromEntangledAsyncAction", "suspendIfUpdateReadFromEntangledAsyncAction", "entangledActionThenable", "processUpdateQueue", "workInProgress$jscomp$0", "instance$jscomp$0", "firstBaseUpdate", "lastBaseUpdate", "pendingQueue", "lastPendingUpdate", "firstPendingUpdate", "newState", "isHiddenUpdate", "workInProgressRootRenderLanes", "workInProgressRootSkippedLanes", "callCallback", "callback", "commitCallbacks", "callbacks", "currentTreeHiddenStackCursor", "prevEntangledRenderLanesCursor", "pushHiddenContext", "entangledRenderLanes", "reuseHiddenContextOnStack", "popHiddenContext", "suspenseHandlerStackCursor", "shellBoundary", "pushPrimaryTreeSuspenseHandler", "handler", "suspenseStackCursor", "pushDehydratedActivitySuspenseHandler", "pushOffscreenSuspenseHandler", "reuseSuspenseHandlerOnStack", "popSuspenseHandler", "findFirstSuspended", "row", "state", "isSuspenseInstancePending", "isSuspenseInstanceFallback", "currentlyRenderingFiber", "currentHook", "workInProgressHook", "didScheduleRenderPhaseUpdate", "didScheduleRenderPhaseUpdateDuringThisPass", "shouldDoubleInvokeUserFnsInHooksDEV", "localIdCounter", "thenableIndexCounter", "globalClientIdCounter", "throwInvalidHookError", "areHookInputsEqual", "nextDeps", "prevDeps", "renderWithHooks", "secondArg", "nextRenderLanes", "HooksDispatcherOnMount", "HooksDispatcherOnUpdate", "renderWithHooksAgain", "finishRenderingHooks", "ContextOnlyDispatcher", "didRenderTooFewHooks", "didReceiveUpdate", "numberOfReRenders", "HooksDispatcherOnRerender", "TransitionAwareHostComponent", "dispatcher", "maybeThenable", "useThenable", "checkDidRenderIdHook", "didRenderIdHook", "bailoutHooks", "resetHooksOnUnwind", "mountWorkInProgressHook", "hook", "updateWorkInProgressHook", "nextCurrentHook", "nextWorkInProgressHook", "createFunctionComponentUpdateQueue", "use", "usable", "useMemoCache", "size", "memoCache", "array", "basicStateReducer", "action", "updateReducer", "reducer", "updateReducerImpl", "baseQueue", "baseFirst", "newBaseQueueFirst", "newBaseQueueLast", "didReadFromEntangledAsyncAction$60", "revertLane", "rerenderReducer", "dispatch", "lastRenderPhaseUpdate", "updateSyncExternalStore", "subscribe", "getSnapshot", "getServerSnapshot", "isHydrating$jscomp$0", "snapshotChanged", "updateEffect", "subscribeToStore", "pushSimpleEffect", "updateStoreInstance", "pushStoreConsistencyCheck", "renderedSnapshot", "nextSnapshot", "checkIfSnapshotChanged", "forceStoreRerender", "latestGetSnapshot", "scheduleUpdateOnFiber", "mountStateImpl", "initialState", "initialStateInitializer", "updateOptimisticImpl", "passthrough", "dispatchActionState", "actionQueue", "setPendingState", "setState", "payload", "isRenderPhaseUpdate", "actionNode", "runActionStateAction", "prevState", "prevTransition", "currentTransition", "onStartTransitionFinish", "handleActionReturnValue", "onActionError", "error$66", "nextState", "onActionSuccess", "notifyActionListeners", "last", "actionStateReducer", "oldState", "mountActionState", "initialStateProp", "ssrFormState", "JSCompiler_inline_result$jscomp$0", "inRootOrSingleton", "dispatchSetState", "dispatchOptimisticSetState", "updateActionState", "stateHook", "updateActionStateImpl", "currentStateHook", "actionStateActionEffect", "rerenderActionState", "create", "deps", "updateRef", "mountEffectImpl", "fiberFlags", "hookFlags", "updateEffectImpl", "mountEffect", "useEffectEventImpl", "componentUpdateQueue", "events", "updateEvent", "ref", "updateInsertionEffect", "updateLayoutEffect", "imperativeHandleEffect", "refCleanup", "updateImperativeHandle", "mountDebugValue", "updateCallback", "updateMemo", "nextCreate", "mountDeferredValueImpl", "initialValue", "requestDeferredLane", "updateDeferredValueImpl", "prevValue", "startTransition", "pendingState", "finishedState", "thenableForFinishedState", "dispatchSetStateInternal", "requestUpdateLane", "noop", "startHostTransition", "formFiber", "formData", "ensureFormComponentIsStateful", "requestFormReset$1", "existingStateHook", "initialResetState", "useHostTransitionStatus", "updateId", "updateRefresh", "refreshCache", "provider", "root$69", "dispatchReducerAction", "enqueueRenderPhaseUpdate", "entangleTransitionUpdate", "currentState", "eagerState", "throwIfDuringRender", "initialArg", "identifierPrefix", "idWithLeadingBit", "booleanOrThenable", "applyDerivedStateFromProps", "ctor", "getDerivedStateFromProps", "nextProps", "classComponentUpdater", "checkShouldComponentUpdate", "oldProps", "newProps", "nextContext", "callComponentWillReceiveProps", "resolveClassComponentProps", "baseProps", "propName$73", "defaultOnUncaughtError", "defaultOnCaughtError", "defaultOnRecoverableError", "logUncaughtError", "errorInfo", "onUncaughtError", "e$74", "logCaughtError", "boundary", "onCaughtError", "e$75", "createRootErrorUpdate", "createClassErrorUpdate", "initializeClassErrorUpdate", "getDerivedStateFromError", "legacyErrorBoundariesThatAlreadyFailed", "stack", "throwException", "rootRenderLanes", "renderDidSuspendDelayIfPossible", "workInProgressRootExitStatus", "attachPingListener", "wrapperError", "workInProgressRootConcurrentErrors", "SelectiveHydrationException", "reconcileChildren", "nextChildren", "updateForwardRef", "propsWithoutRef", "bailoutOnAlreadyFinishedWork", "updateMemoComponent", "updateSimpleMemoComponent", "checkScheduledUpdateOrContext", "prevProps", "updateFunctionComponent", "updateOffscreenComponent", "deferHiddenOffscreenComponent", "bailoutOffscreenComponent", "nextBaseLanes", "remainingChildLanes", "mountActivityChildren", "mountWorkInProgressOffscreenFiber", "retryActivityComponentWithoutHydrating", "updateActivityComponent", "didSuspend", "canHydrateHydrationBoundary", "dehydrated", "markRef", "replayFunctionComponent", "updateClassComponent", "contextType", "unresolvedOldProps", "oldContext", "contextType$jscomp$0", "mountHostRootWithoutHydrating", "SUSPENDED_MARKER", "mountSuspenseOffscreenState", "getRemainingWorkInPrimaryTree", "primaryTreeDidDefer", "workInProgressDeferredLane", "updateSuspenseComponent", "showFallback", "nextPrimaryChildren", "mountSuspensePrimaryChildren", "retrySuspenseComponentWithoutHydrating", "digest", "primaryChildren", "offscreenProps", "scheduleSuspenseWorkOnFiber", "initSuspenseListRenderState", "isBackwards", "tail", "lastContentRow", "tailMode", "renderState", "updateSuspenseListComponent", "revealOrder", "suspenseContext", "shouldForceFallback", "attemptEarlyBailoutIfNoScheduledUpdate", "state$102", "didSuspendBefore", "beginWork", "$$typeof", "getResource", "getOwnerDocumentFromRootContainer", "setInitialProperties", "resolveSingletonInstance", "canHydrateInstance", "canHydrateTextInstance", "markUpdate", "preloadInstanceAndSuspendIfNeeded", "shouldRemainOnPreviousScreen", "preloadResourceAndSuspendIfNeeded", "resource", "preloadResource", "scheduleRetryEffect", "retryQueue", "workInProgressSuspendedRetryLanes", "cutOffTailIfNeeded", "hasRenderedATailFallback", "lastTailNode", "lastTailNode$106", "bubbleProperties", "completedWork", "didBailout", "newChildLanes", "subtreeFlags", "child$107", "completeWork", "nextResource", "ownerDocument", "listenToAllSupportedEvents", "workInProgressRootRenderTargetTime", "unwindWork", "unwindInterruptedWork", "interruptedWork", "commitHookEffectListMount", "flags", "finishedWork", "lastEffect", "firstEffect", "captureCommitPhaseError", "commitHookEffectListUnmount", "nearestMountedAncestor$jscomp$0", "destroy", "nearestMountedAncestor", "destroy_", "commitClassCallbacks", "safelyCallComponentWillUnmount", "safelyAttachRef", "instanceToUse", "safelyDetachRef", "error$140", "commitHostMount", "commitHostUpdate", "domElement", "updateProperties", "isHostParent", "getHostSibling", "insertOrAppendPlacementNodeIntoContainer", "before", "insertOrAppendPlacementNode", "commitHostSingletonAcquisition", "singleton", "attributes", "offscreenSubtreeIsHidden", "offscreenSubtreeWasHidden", "needsFormReset", "PossiblyWeakSet", "nextEffect", "commitBeforeMutationEffects", "eventsEnabled", "_enabled", "selection", "anchorOffset", "focusNode", "e$20", "indexWithinAnchor", "indexWithinFocus", "next", "selectionInformation", "resolvedPrevProps", "clearContainerSparingly", "commitLayoutEffectOnFiber", "finishedRoot", "recursivelyTraverseLayoutEffects", "error$139", "commitActivityHydrationCallbacks", "commitSuspenseHydrationCallbacks", "retryDehydratedSuspenseBoundary", "registerSuspenseInstanceRetry", "prevOffscreenSubtreeWasHidden", "recursivelyTraverseReappearLayoutEffects", "detachFiberAfterEffects", "hostParent", "hostParentIsContainer", "recursivelyTraverseDeletionEffects", "commitDeletionEffectsOnFiber", "deletedFiber", "prevHostParent", "prevHostParentIsContainer", "releaseSingletonInstance", "clearHydrationBoundary", "retryIfBlockedOn", "getRetryCache", "retryCache", "attachSuspenseRetryListeners", "wakeables", "wakeable", "retry", "resolveRetryWakeable", "recursivelyTraverseMutationEffects", "root$jscomp$0", "parentFiber", "commitMutationEffectsOnFiber", "currentHoistableRoot", "commitReconciliationEffects", "hoistableRoot", "currentResource", "maybeNodes", "getHydratableHoistableCache", "mountHoistable", "acquireResource", "tagCaches", "getHoistableRoot", "recursivelyResetForms", "globalMostRecentFallbackTime", "wasHidden", "prevOffscreenSubtreeIsHidden", "recursivelyTraverseDisappearLayoutEffects", "display", "hideOrUnhideDehydratedBoundary", "hostParentFiber", "parent$141", "before$142", "parent$143", "before$144", "finishedRoot$jscomp$0", "includeWorkInProgressEffects", "hiddenCallbacks", "commitOffscreenPassiveMountEffects", "previousCache", "commitCachePassiveMountEffect", "recursivelyTraversePassiveMountEffects", "committedLanes", "committedTransitions", "commitPassiveMountOnFiber", "_finishedWork$memoize2", "id", "onPostCommit", "recursivelyTraverseAtomicPassiveEffects", "recursivelyTraverseReconnectPassiveEffects", "committedLanes$jscomp$0", "committedTransitions$jscomp$0", "suspenseyCommitFlag", "recursivelyAccumulateSuspenseyCommit", "suspendedState", "accumulateSuspenseyCommitOnFiber", "suspendResource", "previousHoistableRoot", "detachAlternateSiblings", "previousFiber", "recursivelyTraversePassiveUnmountEffects", "commitPassiveUnmountEffectsInsideOfDeletedTree_begin", "commitPassiveUnmountOnFiber", "recursivelyTraverseDisconnectPassiveEffects", "deletedSubtreeRoot", "sibling", "DefaultAsyncDispatcher", "resourceType", "cacheForType", "PossiblyWeakMap", "workInProgressSuspendedReason", "workInProgressThrownValue", "workInProgressRootDidSkipSuspendedSiblings", "workInProgressRootIsPrerendering", "workInProgressRootDidAttachPingListener", "workInProgressRootInterleavedUpdatedLanes", "workInProgressRootPingedLanes", "workInProgressRootDidIncludeRecursiveRenderUpdate", "workInProgressTransitions", "pendingEffectsStatus", "pendingEffectsRoot", "pendingFinishedWork", "pendingEffectsLanes", "pendingEffectsRemainingLanes", "pendingPassiveTransitions", "pendingRecoverableErrors", "prepareFreshStack", "markRootSuspended", "ensureRootIsScheduled", "performWorkOnRoot", "forceSync", "shouldTimeSlice", "exitStatus", "renderRootConcurrent", "renderRootSync", "renderWasConcurrent", "isRenderConsistentWithExternalStores", "wasRootDehydrated", "scheduleTimeout", "commitRootWhenReady", "recoverableErrors", "transitions", "didIncludeRenderPhaseUpdate", "didSkipSuspendedSiblings", "suspendedCommitReason", "completedRenderStartTime", "completedRenderEndTime", "timeoutOffset", "waitForCommitToBeReady", "commitRoot", "check", "didAttemptEntireTree", "index$6", "flushSyncWorkAcrossRoots_impl", "resetWorkInProgressStack", "timeoutHandle", "cancelTimeout", "allEntangledLanes", "index$4", "handleThrow", "thrownValue", "pushDispatcher", "prevDispatcher", "pushAsyncDispatcher", "prevAsyncDispatcher", "shouldYieldForPrerendering", "prevExecutionContext", "unitOfWork", "reason", "throwAndUnwindWorkLoop", "workLoopSync", "thrownValue$165", "performUnitOfWork", "replaySuspendedUnitOfWork", "hostFiber", "completeUnitOfWork", "workLoopConcurrentByScheduler", "thrownValue$167", "suspendedReason", "unwindUnitOfWork", "skipSiblings", "flushPendingEffects", "scheduleCallback$1", "flushPassiveEffects", "flushMutationEffects", "flushLayoutEffects", "flushSpawnedWork", "rootMutationHasEffect", "priorSelectionInformation", "curFocusedElem", "priorFocusedElem", "priorSelectionRange", "win", "start$jscomp$0", "end$jscomp$0", "startMarker", "endMarker", "range", "rootHasLayoutEffect", "releaseRootPooledCache", "onRecoverableError", "recoverableError", "renderPriority", "captureCommitPhaseErrorOnRoot", "rootFiber", "pingCache", "threadIDs", "pingSuspendedRoot", "retryTimedOutBoundary", "boundaryFiber", "retryLane", "priorityLevel", "firstScheduledRoot", "lastScheduledRoot", "didScheduleMicrotask", "mightHavePendingSyncWork", "isFlushingWork", "currentEventTransitionLane", "scheduleImmediateRootScheduleTask", "syncTransitionLanes", "onlyLegacy", "didPerformSomeWork", "root$170", "performSyncWorkOnRoot", "processRootScheduleInImmediateTask", "processRootScheduleInMicrotask", "shouldAttemptEagerTransition", "prev", "scheduleTaskForRootDuringMicrotask", "index$5", "expirationTime", "performWorkOnRootViaSchedulerTask", "didTimeout", "originalCallbackNode", "workInProgressRootRenderLanes$jscomp$0", "scheduleMicrotask", "actionScopeLane", "coerceFormActionProp", "actionProp", "createFormDataWithSubmitter", "form", "submitter", "temp", "extractEvents$1", "maybeTargetInst", "i$jscomp$inline_1577", "eventName$jscomp$inline_1578", "domEventName$jscomp$inline_1579", "capitalizedEvent$jscomp$inline_1580", "nonDelegatedEvents", "eventSystemFlags", "_dispatchQueue$i", "previousInstance", "i$jscomp$0", "_dispatchListeners$i", "currentTarget", "targetElement", "listenerSetKey", "addTrappedEventListener", "listenToNativeEvent", "isCapturePhaseListener", "listeningMarker", "rootContainerElement", "targetContainer", "listenerWrapper", "dispatchDiscreteEvent", "dispatchContinuousEvent", "dispatchEvent", "dispatchEventForPluginEventSystem", "targetInst$jscomp$0", "ancestorInst", "nodeTag", "container", "grandTag", "SyntheticEventCtor", "inCapturePhase", "accumulateTargetOnly", "reactEventName", "lastHostComponent", "_instance", "createDispatchListener", "getParent", "tempB", "accumulateEnterLeaveListenersForEvent", "getTargetInstFunc", "handleEventFunc", "fallbackData", "eventType", "targetFiber", "captureName", "_instance2", "common", "_instance3", "NORMALIZE_NEWLINES_REGEX", "NORMALIZE_NULL_AND_REPLACEMENT_REGEX", "normalizeMarkupForTextOrAttribute", "markup", "serverText", "clientText", "setProp", "setPropOnCustomElement", "hasSrc", "hasSrcSet", "propKey", "propValue$184", "lastProps", "lastProp", "propKey$201", "propKey$217", "propKey$222", "propKey$227", "propKey$232", "isLikelyStaticResource", "initiatorType", "estimateBandwidth", "count", "bits", "resourceEntries", "entry", "transferSize", "duration", "overlapEntry", "overlapStartTime", "overlapTransferSize", "overlapInitiatorType", "namespaceURI", "parentNamespace", "currentPopstateTransitionEvent", "localPromise", "handleErrorInNextTick", "parentInstance", "hydrationInstance", "depth", "nextNode", "node$jscomp$0", "nextNode$jscomp$0", "suspenseInstance", "anyProps", "nodeType", "data", "targetInstance", "rootContainerInstance", "preloadPropsMap", "preconnectsSet", "previousDispatcher", "flushSyncWork", "requestFormReset", "prefetchDNS", "preconnect", "preload", "preloadModule", "preinitScript", "preinitStyle", "preinitModuleScript", "previousWasRendering", "wasRendering", "formInst", "globalDocument", "preconnectAs", "rel", "href", "crossOrigin", "limitedEscapedHref", "as", "preloadSelector", "getStyleKey", "getScriptKey", "getStylesheetSelectorFromKey", "getScriptSelectorFromKey", "precedence", "adoptPreloadPropsForStylesheet", "link", "reject", "insertStylesheet", "src", "scripts", "adoptPreloadPropsForScript", "currentProps", "styles$243", "resource$244", "preloadStylesheet", "stylesheetPropsFromRawProps", "rawProps", "preloadProps", "styleProps", "instance$249", "linkInstance", "nodes", "prior", "stylesheetProps", "scriptProps", "keyAttribute", "caches", "nodeKey", "hostContext", "onUnsuspend", "estimatedBytesWithinLimit", "insertSuspendedStylesheets", "commit", "stylesheetTimer", "unsuspend", "imgTimer", "precedencesByRoot", "insertStylesheetIntoRoot", "precedences", "FiberRootNode", "hydrate", "onDefaultTransitionIndicator", "formState", "createFiberRoot", "initialChildren", "hydrationCallbacks", "isStrictMode", "getContextForSubtree", "parentComponent", "updateContainerImpl", "markRetryLaneImpl", "markRetryLaneIfNotHydrated", "attemptContinuousHydration", "attemptHydrationAtCurrentPriority", "blockedOn", "findInstanceBlockingEvent", "return_targetInst", "clearIfContinuousEvent", "queueIfContinuousEvent", "discreteReplayableEvents", "findInstanceBlockingTarget", "hasScheduledReplayAttempt", "queuedFocus", "queuedDrag", "queuedMouse", "queuedPointers", "queuedPointerCaptures", "queuedExplicitHydrationTargets", "accumulateOrCreateContinuousQueuedReplayableEvent", "existingQueuedEvent", "pointerId", "attemptExplicitHydrationTarget", "queuedTarget", "attemptReplayContinuousQueuedEvent", "queuedEvent", "targetContainers", "nextBlockedOn", "nativeEventClone", "attemptReplayContinuousQueuedEventInMap", "map", "replayUnblockedEvents", "scheduleCallbackIfUnblocked", "unblocked", "lastScheduledReplayQueue", "scheduleReplayQueueIfNeeded", "formReplayingQueue", "submitterOrAction", "unblock", "formProps", "defaultOnDefaultTransitionIndicator", "handleNavigate", "pendingResolve", "handleNavigateComplete", "isCancelled", "startFakeNavigation", "currentEntry", "ReactDOMRoot", "internalRoot", "ReactDOMHydrationRoot", "isomorphicReactPackageVersion$jscomp$inline_1840", "componentOrElement", "internals$jscomp$inline_2347", "hook$jscomp$inline_2348", "require_client", "__commonJSMin", "exports", "module", "checkDCE", "err", "require_react_jsx_runtime_production", "__commonJSMin", "exports", "REACT_ELEMENT_TYPE", "REACT_FRAGMENT_TYPE", "jsxProd", "type", "config", "maybeKey", "key", "propName", "require_jsx_runtime", "__commonJSMin", "exports", "module", "isString", "obj", "defer", "res", "rej", "promise", "resolve", "reject", "makeString", "object", "copy", "a", "s", "t", "m", "lastOfPathSeparatorRegExp", "cleanKey", "key", "canNotTraverseDeeper", "getLastOfPath", "path", "Empty", "stack", "stackIndex", "setPath", "newValue", "k", "e", "p", "last", "pushPath", "concat", "getPath", "getPathWithDefaults", "data", "defaultData", "value", "deepExtend", "target", "source", "overwrite", "prop", "regexEscape", "str", "_entityMap", "escape", "RegExpCache", "capacity", "pattern", "regExpFromCache", "regExpNew", "chars", "looksLikeObjectPathRegExpCache", "looksLikeObjectPath", "nsSeparator", "keySeparator", "possibleChars", "c", "r", "matched", "ki", "deepFind", "tokens", "current", "i", "next", "nextPath", "j", "getCleanedCode", "code", "consoleLogger", "args", "type", "_a", "_b", "Logger", "_Logger", "concreteLogger", "options", "lvl", "prefix", "debugOnly", "moduleName", "__spreadValues", "baseLogger", "EventEmitter", "events", "listener", "event", "numListeners", "wrapper", "observer", "numTimesAdded", "ResourceStore", "ns", "index", "lng", "ignoreJSONStructure", "result", "resources", "deep", "pack", "v", "postProcessor", "module", "processors", "translator", "processor", "PATH_KEY", "createProxy", "state", "handler", "proxy", "keysFromSelector", "selector", "opts", "strict", "nsList", "shouldHandleAsObject", "Translator", "_Translator", "services", "o", "opt", "resolved", "isObject", "namespaces", "wouldCheckForNsInKey", "seemsNaturalLanguage", "parts", "keys", "lastKey", "returnDetails", "namespace", "appendNamespaceToCIMode", "resUsedKey", "resExactUsedKey", "noObject", "joinArrays", "handleAsObjectInI18nFormat", "needsPluralHandling", "hasDefaultValue", "defaultValueSuffix", "defaultValueSuffixOrdinalFallback", "needsZeroSuffixLookup", "defaultValue", "resForObjHndl", "handleAsObject", "resType", "__spreadProps", "resTypeIsArray", "newKeyToUse", "deepKey", "usedDefault", "usedKey", "resForMissing", "updateMissing", "fk", "lngs", "fallbackLngs", "send", "l", "specificDefaultValue", "defaultForMissing", "language", "suffixes", "suffix", "skipOnVariables", "nestBef", "nb", "na", "nestAft", "postProcess", "postProcessorNames", "found", "exactUsedKey", "usedLng", "usedNS", "extracted", "needsContextHandling", "codes", "finalKeys", "pluralSuffix", "zeroSuffix", "ordinalPrefix", "contextKey", "possibleKey", "optionsKeys", "useOptionsReplaceForData", "option", "LanguageUtil", "formattedCode", "cleanedLng", "lngScOnly", "lngOnly", "supportedLng", "fallbacks", "fallbackCode", "fallbackCodes", "addCode", "fc", "suffixesOrder", "dummyRule", "count", "PluralResolver", "languageUtils", "cleanedCode", "cacheKey", "rule", "err", "lngPart", "pluralCategory1", "pluralCategory2", "pluralCategory", "deepFindWithDefaults", "regexSafe", "val", "Interpolator", "escape$1", "escapeValue", "useRawValueToEscape", "prefixEscaped", "suffixEscaped", "formatSeparator", "unescapeSuffix", "unescapePrefix", "nestingPrefix", "nestingPrefixEscaped", "nestingSuffix", "nestingSuffixEscaped", "nestingOptionsSeparator", "maxReplaces", "alwaysFormat", "getOrResetRegExp", "existingRegExp", "match", "replaces", "handleFormat", "f", "missingInterpolationHandler", "todo", "matchedVar", "temp", "safeValue", "clonedOptions", "handleHasOptions", "inheritedOptions", "sep", "optionsString", "matchedSingleQuotes", "matchedDoubleQuotes", "formatters", "keyEndIndex", "elem", "parseFormatStr", "formatStr", "formatName", "formatOptions", "optStr", "rest", "trimmedKey", "createCachedFormatter", "fn", "cache", "optForCache", "frm", "createNonCachedFormatter", "Formatter", "cf", "formatter", "name", "format", "formats", "lastIndex", "mem", "formatted", "valOptions", "error", "removePending", "q", "Connector", "backend", "store", "languages", "callback", "toLoad", "pending", "toLoadLanguages", "toLoadNamespaces", "hasAllNamespaces", "loaded", "loadedKeys", "n", "fcName", "tried", "wait", "resolver", "fallbackValue", "isUpdate", "clb", "_c", "_d", "_e", "get", "ret", "transformOptions", "noop", "bindMemberFunctions", "inst", "I18n", "_I18n", "defOpts", "createClassOnDemand", "ClassOrObject", "lu", "deferred", "load", "finish", "usedCallback", "append", "li", "lngInLngs", "setLngProps", "done", "setLng", "fl", "keyPrefix", "fixedOpts", "scopeNs", "fixedT", "explicitCallNs", "selectorOpts", "resultKey", "fallbackLng", "lastLng", "loadNotPending", "loadState", "preResult", "preloaded", "newLngs", "ti", "rtlLngs", "instance", "forkResourceStore", "mergedOptions", "clone", "clonedData", "prev", "acc", "mergedInterpolation", "mergedForInterpolator", "createInstance", "dir", "init", "loadResources", "reloadResources", "use", "changeLanguage", "getFixedT", "exists", "setDefaultNamespace", "hasLoadedNamespace", "loadNamespaces", "loadLanguages", "_classCallCheck", "a", "n", "_typeof", "o", "toPrimitive", "t", "r", "_typeof", "e", "i", "toPropertyKey", "t", "i", "toPrimitive", "_typeof", "_defineProperties", "r", "t", "o", "toPropertyKey", "_createClass", "arr", "each", "slice", "defaults", "obj", "source", "prop", "createClassOnDemand", "ClassOrObject", "getDefaults", "handleCorrectReadFunction", "backend", "language", "namespace", "resolver", "fc", "r", "data", "err", "Backend", "services", "options", "i18nextOptions", "_classCallCheck", "_createClass", "_this", "b", "i", "callback", "_this2", "bLen", "_loadPosition", "pos", "isLastBackend", "lengthCheckAmount", "savedAt", "_savePosition", "nextBackend", "languages", "key", "fallbackValue", "clb", "opts", "_this3", "_this$services", "backendConnector", "languageUtils", "logger", "currentLanguage", "toLoad", "append", "lng", "lngs", "l", "ns", "arr", "UNSAFE_KEYS$1", "isSafeUrlSegmentBase", "v", "isSafeLangUrlSegment", "isSafeNsUrlSegment", "SAFETY_CHECK_BY_KEY", "sanitizeLogValue", "redactUrlCredentials", "u", "parsed", "e", "hasXMLHttpRequest", "isPromise", "maybePromise", "makePromise", "interpolationRegexp", "interpolateUrl", "str", "data", "unsafe", "result", "match", "key", "k", "value", "check", "segments", "seg", "g", "fetchApi", "XmlHttpRequestApi", "ActiveXObjectApi", "UNSAFE_KEYS", "addQueryString", "url", "params", "queryString", "paramName", "fetchIt", "fetchOptions", "callback", "altFetch", "resolver", "response", "altResponse", "requestWithFetch", "options", "payload", "headers", "__spreadValues", "reqOptions", "opt", "err", "requestWithXmlHttpRequest", "x", "h", "i", "request", "getDefaults", "namespace", "fallbackValue", "languages", "namespaces", "Backend", "services", "allOptions", "timer", "language", "loadUrlLanguages", "loadUrlNamespaces", "loadPath", "resolvedLoadPath", "safeLngs", "safeNss", "lng", "ns", "safeUrl", "res", "errorMessage", "term", "ret", "parseErr", "finished", "dataArray", "resArray", "addPath", "backendConnector", "languageUtils", "logger", "currentLanguage", "toLoad", "append", "l", "_defineProperty", "r", "t", "toPropertyKey", "ownKeys", "r", "t", "o", "_objectSpread", "_defineProperty", "Storage", "options", "_classCallCheck", "_createClass", "key", "value", "e", "getDefaults", "store", "Cache", "services", "language", "namespace", "callback", "nowMS", "local", "version", "i18nStamp", "data", "_this$options$getVers", "_this$options", "import_react", "import_react", "warn", "i18n", "code", "msg", "rest", "_a", "_b", "_c", "_d", "args", "__spreadValues", "isString", "alreadyWarned", "warnOnce", "loadedClb", "cb", "initialized", "loadNamespaces", "ns", "loadLanguages", "lng", "n", "hasLoadedNamespace", "options", "i18nInstance", "loadNotPending", "isString", "obj", "isObject", "matchHtmlEntity", "htmlEntities", "unescapeHtmlEntity", "m", "unescape", "text", "defaultOptions", "unescape", "setDefaults", "options", "__spreadValues", "getDefaults", "i18nInstance", "setI18n", "instance", "getI18n", "import_react", "initReactI18next", "instance", "setDefaults", "setI18n", "I18nContext", "ReportNamespaces", "namespaces", "ns", "import_react", "import_react", "TranslationParserError", "_TranslationParserError", "message", "position", "translationString", "commonEntities", "entityPattern", "entity", "decodeHtmlEntities", "text", "match", "_", "num", "hex", "tokenize", "translation", "tokens", "position", "currentText", "flushText", "char", "tagMatch", "closeTagMatch", "import_react", "renderDeclarationNode", "declaration", "children", "childDeclarations", "type", "props", "_a", "_childrenToRemove", "propsWithoutChildren", "__objRest", "React", "renderTranslation", "translation", "declarations", "tokens", "tokenize", "result", "stack", "literalTagNumbers", "getCurrentDeclarations", "parentFrame", "token", "decoded", "decodeHtmlEntities", "tagNumber", "currentDeclarations", "literalText", "TranslationParserError", "frame", "element", "unclosed", "IcuTransWithoutContext", "i18nKey", "defaultTranslation", "content", "ns", "values", "i18nFromProps", "tFromProps", "_a", "_b", "_c", "_d", "i18n", "getI18n", "warnOnce", "React", "t", "namespaces", "isString", "mergedValues", "__spreadValues", "translation", "__spreadProps", "rendered", "renderTranslation", "error", "warn", "IcuTrans", "i18nKey", "defaultTranslation", "content", "ns", "values", "i18nFromProps", "tFromProps", "_a", "i18nFromContext", "defaultNSFromContext", "I18nContext", "i18n", "getI18n", "t", "IcuTransWithoutContext", "import_react", "import_shim", "notReadyT", "k", "optsOrDefaultValue", "isString", "isObject", "last", "notReadySnapshot", "dummySubscribe", "useTranslation", "ns", "props", "_a", "_b", "_c", "i18nFromProps", "i18nFromContext", "defaultNSFromContext", "I18nContext", "i18n", "getI18n", "ReportNamespaces", "warnOnce", "i18nOptions", "__spreadValues", "getDefaults", "useSuspense", "keyPrefix", "nsOrContext", "unstableNamespaces", "namespaces", "revisionRef", "subscribe", "callback", "bindI18n", "bindI18nStore", "wrappedCallback", "e", "snapshotRef", "getSnapshot", "calculatedReady", "n", "hasLoadedNamespace", "currentLng", "currentRevision", "lastSnapshot", "newSnapshot", "loadCount", "setLoadCount", "t", "ready", "onLoaded", "c", "loadLanguages", "loadNamespaces", "finalI18n", "wrapperRef", "wrapperLangRef", "createI18nWrapper", "original", "descriptors", "wrapper", "_", "ret", "lang", "i18nWrapper", "effectiveT", "args", "arr", "resolve", "import_react", "import_react", "import_react", "import_react", "translation_default", "app", "fromNow", "locale", "date", "diff", "abs", "units", "rtf", "unit", "ms", "shdatetime", "lang", "dateString", "toLocaleDateString", "closeWindow", "win", "setFocus", "elemId", "_a", "unsafeDecode", "str", "parseQueryString", "searchOrHash", "_a", "first", "parts", "x", "decode", "out", "kv", "k", "rest", "curQuerystring", "lookupQueryStringValue", "qs", "key", "val", "encodeTag", "tag", "fromNullableStr", "s", "normalizeTags", "tags", "apiErrorMsg", "t", "status", "bodyText", "body", "getShortHash", "hash", "i", "defaultNS", "a", "app", "instance", "Backend", "initReactI18next", "defaultNS", "translation_default", "Cache", "getShortHash", "import_react", "import_client", "KyError", "__publicField", "HTTPError", "KyError", "response", "request", "options", "_a", "code", "title", "status", "reason", "__publicField", "NetworkError", "KyError", "request", "options", "__publicField", "NonError", "value", "message", "e", "__publicField", "ForceRetryError", "KyError", "options", "cause", "NonError", "__publicField", "SchemaValidationError", "issues", "__publicField", "TimeoutError", "KyError", "request", "__publicField", "supportsRequestStreams", "duplexAccessed", "hasContentType", "supportsReadableStream", "supportsRequest", "error", "supportsAbortController", "supportsAbortSignal", "supportsResponseStreams", "supportsFormData", "requestMethods", "validate", "responseTypes", "maxSafeTimeout", "usualFormBoundarySize", "stop", "RetryMarker", "options", "__publicField", "retry", "kyOptionKeys", "requestOptionsRegistry", "encoder", "getBodySize", "body", "size", "key", "value", "usualFormBoundarySize", "withProgress", "stream", "totalBytes", "onProgress", "previousChunk", "transferredBytes", "currentChunk", "controller", "percent", "streamResponse", "response", "onDownloadProgress", "responseInit", "streamRequest", "request", "onUploadProgress", "originalBody", "isObject", "value", "replaceSymbol", "getReplaceState", "value", "isObject", "validateAndMerge", "sources", "source", "isObject", "deepMerge", "mergeHeaders", "source1", "source2", "result", "isHeadersInstance", "key", "value", "isPlainObject", "prototype", "cloneShallow", "copy", "deleted", "deletedParametersSymbol", "__spreadValues", "normalizeHeaderObject", "headers", "entry", "mergeHeaderContainers", "newHookValue", "original", "incoming", "property", "_a", "_b", "mergeHooks", "appendSearchParameters", "target", "input", "inputDeleted", "pair", "parameters", "returnValue", "hooks", "searchParameters", "signals", "replaceState", "getReplaceState", "isReplace", "__spreadProps", "hookValue", "headerValue", "supportsAbortSignal", "normalizeRequestMethod", "input", "requestMethods", "retryMethods", "retryStatusCodes", "retryAfterStatusCodes", "defaultRetryOptions", "attemptCount", "normalizeRetryOptions", "retry", "_a", "__spreadProps", "__spreadValues", "normalizedRetry", "method", "value", "timeout", "request", "init", "abortController", "options", "resolve", "reject", "timeoutId", "TimeoutError", "delay", "ms", "signal", "resolve", "reject", "abortHandler", "timeoutId", "findUnknownOptions", "options", "unknownOptions", "key", "requestOptionsRegistry", "kyOptionKeys", "hasSearchParameters", "search", "_a", "deletedParametersSymbol", "objectToString", "isError", "value", "errorMessages", "isRawNetworkError", "error", "message", "stack", "isErrorType", "error", "cls", "isHTTPError", "error", "isErrorType", "HTTPError", "isNetworkError", "NetworkError", "isTimeoutError", "TimeoutError", "maxErrorResponseBodySize", "prefixUrlRenamedErrorMessage", "timedOutResponseData", "createTextDecoder", "contentType", "_a", "match", "charset", "e", "invalidSchemaMessage", "cloneRetryOptions", "retry", "__spreadValues", "objectToString", "isRequestInstance", "value", "isResponseInstance", "cloneSearchParametersForInitHook", "searchParameters", "parameter", "cloneShallow", "cloneInitHookOptions", "options", "clonedOptions", "__spreadProps", "validateJsonWithSchema", "jsonValue", "schema", "standardSchema", "validationResult", "SchemaValidationError", "_Ky_static", "normalizeSearchParams_fn", "_abortController", "_retryCount", "_input", "_options", "_originalRequest", "_userProvidedAbortSignal", "_beforeRetryHookErrors", "_cachedNormalizedOptions", "_startTime", "_returnedResponseFromBeforeRetryHook", "_responseRequests", "_Ky_instances", "calculateDelay_fn", "calculateRetryDelay_fn", "decorateResponse_fn", "getResponseData_fn", "getErrorDataTimeout_fn", "isJsonContentType_fn", "readResponseText_fn", "parseJson_fn", "cancelBody_fn", "cancelResponseBody_fn", "createManagedSignal_fn", "throwIfTotalTimeoutExhausted_fn", "runBeforeRequestHooks_fn", "runAfterResponseHooks_fn", "retry_fn", "retryFromError_fn", "consumeReturnedResponseFromBeforeRetryHook_fn", "fetch_fn", "getRemainingTotalTimeout_fn", "getCurrentTime_fn", "getNormalizedOptions_fn", "assignRequest_fn", "getResponseRequest_fn", "setResponseRequest_fn", "wrapRequestWithUploadProgress_fn", "_Ky", "input", "__privateAdd", "__publicField", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j", "_k", "_l", "_m", "_n", "__privateSet", "mergeHeaders", "__privateGet", "mergeHooks", "normalizeRequestMethod", "normalizeRetryOptions", "normalizedPrefix", "normalizedInput", "absoluteInput", "supportsAbortController", "supportsAbortSignal", "__privateMethod", "supportsRequestStreams", "userProvidedContentType", "supportsFormData", "hasSearchParameters", "url", "deleted", "deletedParametersSymbol", "key", "stringSearchParameters", "optionsSearchParameters", "initHooks", "initHookOptions", "hook", "ky", "function_", "maxSafeTimeout", "beforeRequestResponse", "response", "responseFromHook", "error", "ForceRetryError", "retriedResponse", "currentResponse", "httpError", "HTTPError", "errorToThrow", "supportsResponseStreams", "progressResponse", "streamResponse", "result", "processedError", "hookResult", "originalRequest", "type", "mimeType", "responseTypes", "text", "searchParams", "retryDelay", "jitteredDelay", "errorObject", "NonError", "isTimeoutError", "isHTTPError", "retryAfter", "after", "isNetworkError", "request", "data", "errorDataTimeout", "remainingTotal", "TimeoutError", "timeoutMs", "body", "reader", "decoder", "chunks", "totalBytes", "readAll", "done", "timeoutPromise", "resolve", "timeoutId", "remaining", "responseRequest", "hookResponse", "modifiedResponse", "RetryMarker", "nextResponse", "delayOptions", "remainingTimeout", "delay", "customRequest", "hookError", "__privateWrapper", "stop", "nonRequestOptions", "findUnknownOptions", "retryRequest", "effectiveTimeout", "timeout", "isRawNetworkError", "NetworkError", "elapsed", "hooks", "json", "parseJson", "stringifyJson", "totalTimeout", "throwHttpErrors", "fetch", "normalizedOptions", "__objRest", "originalBody", "streamRequest", "Ky", "createInstance", "defaults", "ky", "input", "options", "Ky", "validateAndMerge", "method", "requestMethods", "newDefaults", "stop", "retry", "distribution_default", "withCsrf", "headers", "a", "app", "h", "request", "method", "path", "opts", "_a", "distribution_default", "toggleStar", "bid", "action", "res", "markRead", "destroy", "bulkEdit", "req", "bulkEditPost", "noteBulkEdit", "contentType", "bodyText", "data", "e", "archiveBookmark", "editBookmark", "bm", "editNote", "note", "lookupTitle", "getTagCloud", "mode", "tagCloudR", "updateTagCloudMode", "fetchTagSuggestions", "destroyNote", "nid", "editAccountSettings", "us", "resetApiKey", "revokeApiKey", "exportPaths", "importFile", "body", "importBookmarks", "text", "importFirefox", "importNetscape", "importNotes", "jsonArray", "logout", "import_react", "import_jsx_runtime", "tabPaths", "tabHref", "value", "tabFromLocation", "pathname", "AccountSettingsView", "initial", "useTranslation", "tab", "setTab", "React", "onPopState", "tabLink", "label", "e", "SettingsView", "ImportExportView", "ApiKeyView", "_a", "us", "setUs", "apiError", "setApiError", "archiveDisabled", "archiveDisabledTitle", "update", "next", "res", "editAccountSettings", "apiErrorMsg", "lockIcon", "err", "TimeoutError", "__spreadProps", "__spreadValues", "ok", "t", "status", "setStatus", "error", "setError", "busy", "setBusy", "runImport", "files", "prepare", "importFn", "texts", "f", "body", "first", "combineNotes", "notes", "txt", "parsed", "importRow", "accept", "multiple", "exportPaths", "importBookmarks", "importFirefox", "importNetscape", "importNotes", "initialHasApiKey", "hasApiKey", "setHasApiKey", "newKey", "setNewKey", "copied", "setCopied", "reset", "resetApiKey", "revoke", "revokeApiKey", "copyKey", "import_react", "import_react", "TAG_SUGGESTION_DEBOUNCE_MS", "useTagSuggestions", "enabled", "useReturnKey", "tags", "onTagsUpdate", "maxSuggestions", "suggestionState", "setSuggestionState", "React", "tagSuggestionRequestId", "tagSuggestionDebounceRef", "tagInputRef", "cancelPendingSuggestions", "closeSuggestions", "onTagsChange", "e", "value", "selectionStart", "selectionEnd", "isWhitespaceOnlyEdit", "activeToken", "getActiveTagToken", "normalizedTagTerms", "getNormalizedTagTerms", "activeTokenNormalized", "shouldExcludeActiveToken", "tag", "payload", "requestId", "response", "fetchTagSuggestions", "items", "anchor", "measureCaretPosition", "applySuggestion", "term", "input", "next", "replaceTokenAtRange", "onTagsKeyDown", "current", "__spreadProps", "__spreadValues", "selected", "onTagsSelect", "onSuggestionHover", "index", "caret", "boundedCaret", "start", "end", "token", "style", "mirror", "prefix", "marker", "left", "top", "range", "replacement", "suffix", "inserted", "previous", "prevEnd", "nextEnd", "removed", "added", "isSpacesOnly", "import_react", "import_jsx_runtime", "MAX_SUGGESTION_TERM_RENDER_LENGTH", "TagSuggestionsDropdown", "suggestionState", "onHover", "onPick", "item", "index", "selected", "displayTerm", "truncateSuggestionTerm", "e", "renderHighlightedSuggestion", "term", "query", "lowerTerm", "lowerQuery", "idx", "before", "match", "after", "import_jsx_runtime", "AddForm", "initial", "_a", "useTranslation", "a", "app", "bm", "setBm", "React", "editBm", "setEditBm", "deleteAsk", "setDeleteAsk", "loading", "setLoading", "destroyed", "setDestroyed", "apiError", "setApiError", "suggestEnabled", "suggestUseReturnKey", "fromNowVal", "fromNow", "tagInputRef", "suggestionState", "closeSuggestions", "onTagsChange", "onTagsKeyDown", "onTagsSelect", "onSuggestionHover", "onSuggestionPick", "useTagSuggestions", "tags", "x", "__spreadProps", "__spreadValues", "onFetchTitle", "title", "lookupTitle", "onDestroy", "res", "destroy", "onSubmit", "e", "editBm2", "normalizeTags", "editBookmark", "qs", "curQuerystring", "next", "lookupQueryStringValue", "ref", "org", "closeWindow", "shdatetime", "TagSuggestionsDropdown", "import_react", "createStoreImpl", "createState", "state", "listeners", "setState", "partial", "replace", "nextState", "previousState", "listener", "getState", "api", "initialState", "createStore", "import_react", "identity", "arg", "useStore", "api", "selector", "slice", "React", "createImpl", "createState", "createStore", "useBoundStore", "create", "useBookmarksStore", "create", "set", "bmarks", "bid", "s", "b", "bm", "import_react", "entries", "Object", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "freeze", "seal", "create", "_ref", "Reflect", "apply", "construct", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "arrayIsArray", "isArray", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "numberToString", "Number", "booleanToString", "Boolean", "bigintToString", "BigInt", "symbolToString", "Symbol", "objectHasOwnProperty", "hasOwnProperty", "objectToString", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "lastIndex", "_len3", "_key3", "_len4", "_key4", "addToSet", "set", "array", "transformCaseFunc", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "_ref2", "_ref3", "_slicedToArray", "property", "value", "constructor", "stringifyValue", "valueAsRecord", "valueToString", "lookupGetter", "stringified", "prop", "desc", "get", "fallbackValue", "isRegex", "_unused", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "CUSTOM_ELEMENT", "NODE_TYPE", "attribute", "cdataSection", "entityReference", "entityNode", "progressingInstruction", "comment", "document", "documentType", "documentFragment", "notation", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "_", "console", "warn", "_createHooksMap", "afterSanitizeAttributes", "afterSanitizeElements", "afterSanitizeShadowDOM", "beforeSanitizeAttributes", "beforeSanitizeElements", "beforeSanitizeShadowDOM", "uponSanitizeAttribute", "uponSanitizeElement", "uponSanitizeShadowNode", "createDOMPurify", "undefined", "DOMPurify", "root", "version", "VERSION", "removed", "nodeType", "Element", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "NodeFilter", "_window$NamedNodeMap", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "remove", "getNextSibling", "getChildNodes", "getParentNode", "getShadowRoot", "getAttributes", "getNodeType", "getNodeName", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "_document", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "EXTRA_ELEMENT_HANDLING", "tagCheck", "attributeCheck", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "SAFE_FOR_XML", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "customElementHandling", "ADD_TAGS", "ADD_ATTR", "ADD_FORBID_CONTENTS", "table", "tbody", "TRUSTED_TYPES_POLICY", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "_forceRemove", "node", "removeChild", "_removeAttribute", "name", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "SHOW_PROCESSING_INSTRUCTION", "SHOW_CDATA_SECTION", "_scrubTemplateExpressions", "normalize", "walker", "currentNode", "nextNode", "data", "expr", "_isClobbered", "realTagName", "nodeName", "textContent", "attributes", "hasChildNodes", "_isDocumentFragment", "_isNode", "_executeHooks", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_isBasicCustomElement", "parentNode", "childCount", "i", "childClone", "_isValidAttribute", "lcTag", "lcName", "nameIsPermitted", "RESERVED_CUSTOM_ELEMENT_NAMES", "_sanitizeAttributes", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "forceKeepAttr", "attr", "initValue", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "innerSr", "shadowRoot", "_sanitizeAttachedShadowRoots", "sr", "snapshot", "child", "rootName", "sanitize", "importedNode", "returnNode", "nn", "appendChild", "firstChild", "nodeIterator", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "entryPoint", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "noopTest", "cachedIndentRegex", "createRegex", "cache", "indent", "cacheIndex", "regex", "edit", "opt", "source", "obj", "name", "val", "valSource", "other", "supportsLookbehind", "a", "e", "bull", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheadingCore", "lheading", "lheadingGfm", "_paragraph", "blockText", "_blockLabel", "def", "list", "_tag", "_comment", "html", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "__spreadProps", "__spreadValues", "blockPedantic", "escape", "inlineCode", "br", "inlineText", "_punctuation", "_punctuationOrSpace", "_notPunctuationOrSpace", "punctuation", "_punctuationGfmStrongEm", "_punctuationOrSpaceGfmStrongEm", "_notPunctuationOrSpaceGfmStrongEm", "blockSkip", "emStrongLDelimCore", "emStrongLDelim", "emStrongLDelimGfm", "emStrongRDelimAstCore", "emStrongRDelimAst", "emStrongRDelimAstGfm", "emStrongRDelimUnd", "delLDelim", "delRDelimCore", "delRDelim", "anyPunctuation", "autolink", "_inlineComment", "tag", "_inlineLabel", "link", "reflink", "nolink", "reflinkSearch", "_caseInsensitiveProtocol", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "escapeReplacements", "getEscapeReplacement", "ch", "escapeHtmlEntities", "encode", "cleanUrl", "href", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "trimTrailingBlankLines", "lines", "end", "findClosingBracket", "b", "level", "expandTabs", "line", "col", "expanded", "char", "added", "outputLink", "cap", "raw", "lexer", "rules", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "__publicField", "src", "trimmed", "tokens", "inBlockquote", "currentLines", "currentRaw", "currentText", "top", "lastToken", "oldToken", "newText", "newToken", "isordered", "itemRegex", "endsWithBlankLine", "endEarly", "itemContents", "nextLine", "blankLine", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "htmlBeginRegex", "blockquoteBeginRegex", "rawLine", "nextLineWithoutTabs", "lastItem", "item", "itemToken", "taskRaw", "checkboxToken", "spacers", "t", "hasMultipleLineBreaks", "headers", "aligns", "rows", "align", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "_b", "_a", "_Lexer", "__Lexer", "next", "lastParagraphClipped", "srcLength", "extTokenizer", "cutSrc", "_c", "startIndex", "tempSrc", "tempStart", "getStartIndex", "keepPrevChar", "_e", "_d", "_f", "byte", "errMsg", "_Renderer", "lang", "langString", "code", "depth", "ordered", "start", "body", "j", "type", "startAttr", "checked", "header", "k", "content", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "anyToken", "genericToken", "ret", "renderer", "_Hooks", "markdown", "Marked", "args", "callback", "values", "tableToken", "listToken", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "blockType", "origOpt", "throwError", "processedSrc", "processedTokens", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "import_react", "import_jsx_runtime", "g", "Markdown", "text", "className", "html", "React", "parsed", "purify", "import_jsx_runtime", "BMark", "initial", "onNotifyRemove", "onUpdated", "_a", "t", "useTranslation", "a", "app", "bm", "setBm", "React", "editBm", "setEditBm", "deleteAsk", "setDeleteAsk", "edit", "setEdit", "loading", "setLoading", "archiving", "setArchiving", "actionError", "setActionError", "errorFadingOut", "setErrorFadingOut", "errorTimer", "fadeTimer", "clearErrorTimers", "showActionError", "msg", "tagInputId", "linkToFilterSingle", "fromNullableStr", "linkToFilterTag", "tag", "encodeTag", "viewInContextTime", "time", "linkToViewInContext", "suggestEnabled", "suggestUseReturnKey", "tagInputRef", "suggestionState", "closeSuggestions", "onTagsChange", "onTagsKeyDown", "onTagsSelect", "onSuggestionHover", "onSuggestionPick", "useTagSuggestions", "tags", "x", "__spreadProps", "__spreadValues", "onStar", "next", "res", "toggleStar", "apiErrorMsg", "updated", "err", "TimeoutError", "onDestroy", "destroy", "onMarkRead", "markRead", "startEdit", "setFocus", "onFetchTitle", "title", "lookupTitle", "onArchive", "archiveBookmark", "onSubmit", "e", "editBm2", "normalizeTags", "editBookmark", "archivingDisabled", "Markdown", "shdatetime", "toLocaleDateString", "TagSuggestionsDropdown", "import_jsx_runtime", "BList", "initial", "hasHydrated", "setHasHydrated", "React", "bmarks", "useBookmarksStore", "s", "setAll", "removeById", "upsert", "b", "BMark", "bm", "import_react", "import_jsx_runtime", "disabledReason", "selection", "action", "addTags", "removeTags", "bcount", "navLink", "current", "value", "label", "onClick", "e", "BulkEdit", "_a", "_b", "_c", "_d", "useTranslation", "visible", "setVisible", "setSelection", "setAction", "setAddTags", "setRemoveTags", "submitting", "setSubmitting", "confirmDelete", "setConfirmDelete", "confirmPublic", "setConfirmPublic", "validationMsg", "setValidationMsg", "errorFadingOut", "setErrorFadingOut", "validationTimer", "fadeTimer", "a", "app", "suggestEnabled", "suggestUseReturnKey", "bulkFilter", "bulkSharedp", "bulkTags", "bulkQuery", "bids", "useBookmarksStore", "s", "b", "pageCount", "selectionCount", "reason", "isVisuallyDisabled", "removeTagsRef", "removeSuggestionState", "closeRemoveSuggestions", "onRemoveTagsChange", "onRemoveTagsKeyDown", "onRemoveTagsSelect", "onRemoveSuggestionHover", "onRemoveSuggestionPick", "useTagSuggestions", "addTagsRef", "addSuggestionState", "closeAddSuggestions", "onAddTagsChange", "onAddTagsKeyDown", "onAddTagsSelect", "onAddSuggestionHover", "onAddSuggestionPick", "clearValidationTimers", "resetForm", "el", "handler", "v", "showValidationMsg", "msg", "handleSubmit", "addTagsTrimmed", "normalizeTags", "removeTagsTrimmed", "r", "res", "bulkEdit", "apiErrorMsg", "err", "TimeoutError", "toggleAction", "cur", "TagSuggestionsDropdown", "import_react", "import_jsx_runtime", "toTextareaPreview", "input", "lines", "x", "idx", "React", "NList", "initial", "useTranslation", "a", "app", "previewNotes", "linkToFilterSingle", "slug", "fromNullableStr", "note", "fromNowVal", "fromNow", "shdatetime", "import_react", "import_jsx_runtime", "toTextarea", "input", "lines", "x", "idx", "React", "NNote", "initial", "useTranslation", "a", "app", "note", "setNote", "editNoteState", "setEditNoteState", "deleteAsk", "setDeleteAsk", "edit", "setEdit", "destroyed", "setDestroyed", "apiError", "setApiError", "fromNowVal", "fromNow", "notetextid", "startEdit", "next", "qs", "curQuerystring", "q", "lookupQueryStringValue", "closeWindow", "setFocus", "onDestroy", "res", "destroyNote", "apiErrorMsg", "err", "TimeoutError", "onSubmit", "e", "editNote", "ref", "org", "fromNullableStr", "__spreadProps", "__spreadValues", "Markdown", "shdatetime", "import_react", "import_jsx_runtime", "disabledReason", "selection", "action", "navLink", "current", "value", "label", "onClick", "e", "NoteBulkEdit", "ncount", "_a", "_b", "_c", "useTranslation", "visible", "setVisible", "setSelection", "setAction", "submitting", "setSubmitting", "confirmDelete", "setConfirmDelete", "confirmPublic", "setConfirmPublic", "validationMsg", "setValidationMsg", "errorFadingOut", "setErrorFadingOut", "validationTimer", "fadeTimer", "a", "app", "bulkQuery", "bulkSharedp", "nids", "n", "pageCount", "selectionCount", "reason", "isVisuallyDisabled", "clearValidationTimers", "resetForm", "el", "handler", "v", "showValidationMsg", "msg", "handleSubmit", "r", "res", "noteBulkEdit", "apiErrorMsg", "err", "TimeoutError", "toggleAction", "cur", "import_react", "useTagCloudStore", "create", "set", "mode", "tagcloud", "tagCloudModeToF", "mode", "n", "s", "tags", "lowerBound", "tagCloudModeFromF", "isExpanded", "setExpanded", "expanded", "__spreadProps", "__spreadValues", "import_jsx_runtime", "TagCloud", "initialMode", "useTranslation", "mode", "useTagCloudStore", "s", "tagcloud", "setMode", "setTagCloud", "React", "fetchTagCloud", "m", "tc", "getTagCloud", "tagCloudModeFromF", "makeLbMode", "n", "isExpanded", "relatedTags", "makeRelatedMode", "makeRelatedLbMode", "lb", "onExpanded", "expanded", "next", "setExpanded", "app", "updateTagCloudMode", "onChangeBrowse", "onChangeRelated", "isTagCloudModeRelated", "activeLb", "titleKey", "renderLinks", "curtags", "a", "cur", "tag", "linkToFilterTag", "rest", "fromNullableStr", "tagCounts", "cMin", "cMax", "x", "y", "c", "kLower", "fontsize", "rescale", "opacity", "style", "includeExcludeLink", "t", "encodeTag", "f", "v", "l", "h", "denom", "import_jsx_runtime", "selectEl", "selector", "viewRendered", "el", "RenderReady", "children", "renderView", "renderElSelector", "node", "logoutE", "logout", "renderBookmarks", "bmarks", "BList", "renderBulkEdit", "bcount", "BulkEdit", "renderTagCloud", "tagCloudMode", "TagCloud", "tagCloudModeToF", "renderAddForm", "bmark", "AddForm", "renderNotes", "notes", "NList", "renderNoteBulkEdit", "ncount", "NoteBulkEdit", "renderNote", "note", "NNote", "renderAccountSettings", "accountSettings", "AccountSettingsView", "initColorSchemeToggle", "isColorSchemePreference", "value", "getEffectiveColorScheme", "explicit", "applyColorSchemePreference", "preference", "colorSchemeStorageKey", "stored", "toggleEl", "e", "next"] -}
− static/js/app-REOQEZQK.min.js.map.gz
binary file changed (427562 → absent bytes)
static/js/manifest.json view
@@ -1,1 +1,1 @@-{"appBundle":"app-REOQEZQK.min.js"} +{"appBundle":"app-LILLUWFD.min.js"}
static/locales/de/translation.json view
@@ -17,7 +17,12 @@ "error": "Fehler: {{status}}", "errorWithMsg": "Fehler {{status}}: {{msg}}", "requestTimedOut": "Anfrage abgelaufen", - "networkError": "Netzwerkfehler" + "networkError": "Netzwerkfehler", + "upsertUnauthorized": "Nicht autorisiert", + "upsertNotFound": "Nicht gefunden", + "upsertHrefUsedByOther": "URL wird bereits von einem anderen Lesezeichen verwendet", + "upsertConflictWithNewer": "Eintrag auf dem Server wurde zwischenzeitlich aktualisiert; bitte neu laden und erneut versuchen", + "upsertInvalidInput": "Ungültige Eingabe" }, "nav": { "privateProfileEnabled": "privates Profil aktiviert", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Altes Passwort", "newPassword": "Neues Passwort", - "submit": "Änderungen speichern" + "submit": "Änderungen speichern", + "demoMode": "Demo-Modus: Passwortänderungen sind deaktiviert" }, "settings": { "serverDefault": "Serverstandard", @@ -100,9 +106,19 @@ "pagination": { "perPage": "pro Seite:" }, + "sort": { + "label": "sortieren:", + "time": "Zeit", + "url": "URL", + "title": "Titel", + "tagcount": "Taganzahl", + "created": "erstellt" + }, "pager": { "earlier": "« früher", - "later": "später »" + "later": "später »", + "previous": "« vorherige", + "next": "nächste »" }, "notes": { "count_one": "{{count}} Notiz", @@ -229,18 +245,24 @@ "betweenQuery": "zwischen jede Suchanfrage.", "excludeWords": "Wörter aus der Suche ausschließen", "inFrontWord": "vor ein Wort, das Sie ausschließen möchten.", - "exactMatch": "Nach einer genauen Übereinstimmung suchen", - "putInQuotes": "Ein Wort oder eine Phrase in Anführungszeichen setzen.", + "groupTerms": "Suchbegriffe gruppieren", + "putInParens": "Setzen Sie Klammern um Begriffe, um sie zu einer Einheit zu gruppieren. Gruppen können kombiniert, negiert und verschachtelt werden.", + "searchPhrase": "Nach einer Phrase suchen", + "putInQuotes": "Die Phrase in Anführungszeichen setzen.", "specificField": "In einem bestimmten Feld suchen", "inFrontTerm": "vor dem Begriff,", "where": "wobei", "isOneOfOptions": "eine der folgenden Optionen ist", + "fieldContainsDesc": "Eine Feldsuche ist eine Enthält-Suche: Das Feld muss den Begriff nur enthalten.", + "exactField": "Exakte Suche in einem bestimmten Feld", + "exactFieldDesc": "vor den Begriff, damit das gesamte Feld exakt dem Begriff entsprechen muss. Verfügbar für Textfelder: url, title, description, tags.", "bookmarkSearch": "Lesezeichen-Suche", "noteSearch": "Notizen-Suche", "fieldHeader": "FELD", "exampleHeader": "BEISPIEL", "complexExamples": "Komplexere Beispiele", "complexExample1Desc": "\"youtube\" in URL, und Titel \"haskell\" oder Titel \"python\" und nach dem 31.12.2017", - "complexExample2Desc": "\"hacker news\" nicht im Titel, und \"news\", \"cnn\", \"npr\" irgendwo, oder \"the guardian\" in der Beschreibung" + "complexExample2Desc": "\"hacker news\" nicht im Titel, und \"news\", \"cnn\", \"npr\" irgendwo, oder \"the guardian\" in der Beschreibung", + "complexExample3Desc": "mit den Tags \"haskell\" und \"youtube\", oder nicht mit beiden Tags \"haskell\" und \"vimeo\"; und nicht mit beiden Tags \"surveys\" und \"news\", und nach dem 2018-12-31" } }
static/locales/en/translation.json view
@@ -17,7 +17,12 @@ "error": "error: {{status}}", "errorWithMsg": "error {{status}}: {{msg}}", "requestTimedOut": "request timed out", - "networkError": "network error" + "networkError": "network error", + "upsertUnauthorized": "not authorized", + "upsertNotFound": "not found", + "upsertHrefUsedByOther": "href already used by another bookmark", + "upsertConflictWithNewer": "item on server has been updated more recently; reload and retry", + "upsertInvalidInput": "invalid input" }, "nav": { "privateProfileEnabled": "private profile enabled", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Old Password", "newPassword": "New Password", - "submit": "Save Changes" + "submit": "Save Changes", + "demoMode": "demo mode: password changes are disabled" }, "settings": { "serverDefault": "Server Default", @@ -100,9 +106,19 @@ "pagination": { "perPage": "per page:" }, + "sort": { + "label": "sort:", + "time": "time", + "url": "url", + "title": "title", + "tagcount": "tagcount", + "created": "created" + }, "pager": { "earlier": "« earlier", - "later": "later »" + "later": "later »", + "previous": "« previous", + "next": "next »" }, "notes": { "count_one": "{{count}} note", @@ -229,18 +245,24 @@ "betweenQuery": "between each search query.", "excludeWords": "Exclude words from your search", "inFrontWord": "in front of a word you want to leave out.", - "exactMatch": "Search for an exact match", - "putInQuotes": "Put a word or phrase inside quotes.", + "groupTerms": "Group search terms", + "putInParens": "Put parentheses around terms to group them into a single unit. Groups can be combined, negated, and nested.", + "searchPhrase": "Search for a phrase", + "putInQuotes": "Put phrase inside quotes.", "specificField": "Search on a specific field", "inFrontTerm": "in front of the term,", "where": "where", "isOneOfOptions": "is one of the options below", + "fieldContainsDesc": "A field search performs a contains search: the field only needs to contain the term.", + "exactField": "Exact search on a specific field", + "exactFieldDesc": "in front of the term to require the entire field to equal the term exactly. Available for text fields: url, title, description, tags.", "bookmarkSearch": "Bookmark Search", "noteSearch": "Note Search", "fieldHeader": "FIELD", "exampleHeader": "EXAMPLE", "complexExamples": "More Complex Examples", "complexExample1Desc": "\"youtube\" in url, and title of \"haskell\" or title of \"python\" and after 12/31/2017", - "complexExample2Desc": "\"hacker news\" not in title, and \"news\", \"cnn\", \"npr\" anywhere, or \"the guardian\" in the description" + "complexExample2Desc": "\"hacker news\" not in title, and \"news\", \"cnn\", \"npr\" anywhere, or \"the guardian\" in the description", + "complexExample3Desc": "tagged both \"haskell\" and \"youtube\", or not tagged both \"haskell\" and \"vimeo\"; and not tagged both \"surveys\" and \"news\", and after 2018-12-31" } }
static/locales/es/translation.json view
@@ -17,7 +17,12 @@ "error": "error: {{status}}", "errorWithMsg": "error {{status}}: {{msg}}", "requestTimedOut": "tiempo de espera agotado", - "networkError": "error de red" + "networkError": "error de red", + "upsertUnauthorized": "no autorizado", + "upsertNotFound": "no encontrado", + "upsertHrefUsedByOther": "la url ya está siendo usada por otro marcador", + "upsertConflictWithNewer": "el elemento en el servidor se ha actualizado más recientemente; recargue y vuelva a intentarlo", + "upsertInvalidInput": "entrada no válida" }, "nav": { "privateProfileEnabled": "perfil privado activado", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Contrasena anterior", "newPassword": "Nueva contrasena", - "submit": "Guardar cambios" + "submit": "Guardar cambios", + "demoMode": "modo demo: los cambios de contrasena estan deshabilitados" }, "settings": { "serverDefault": "Predeterminado del servidor", @@ -100,9 +106,19 @@ "pagination": { "perPage": "por pagina:" }, + "sort": { + "label": "ordenar:", + "time": "fecha", + "url": "url", + "title": "título", + "tagcount": "etiquetas", + "created": "creado" + }, "pager": { "earlier": "« anteriores", - "later": "siguientes »" + "later": "siguientes »", + "previous": "« anterior", + "next": "siguiente »" }, "notes": { "count_one": "{{count}} nota", @@ -229,18 +245,24 @@ "betweenQuery": "entre cada consulta de busqueda.", "excludeWords": "Excluir palabras de tu busqueda", "inFrontWord": "delante de una palabra que quieras omitir.", - "exactMatch": "Buscar una coincidencia exacta", - "putInQuotes": "Pon una palabra o frase entre comillas.", + "groupTerms": "Agrupar terminos de busqueda", + "putInParens": "Pon parentesis alrededor de los terminos para agruparlos en una sola unidad. Los grupos se pueden combinar, negar y anidar.", + "searchPhrase": "Buscar una frase", + "putInQuotes": "Pon la frase entre comillas.", "specificField": "Buscar en un campo especifico", "inFrontTerm": "delante del termino,", "where": "donde", "isOneOfOptions": "es una de las opciones siguientes", + "fieldContainsDesc": "Una busqueda por campo es una busqueda de contenido: basta con que el campo contenga el termino.", + "exactField": "Busqueda exacta en un campo especifico", + "exactFieldDesc": "delante del termino para exigir que el campo completo sea exactamente igual al termino. Disponible para campos de texto: url, title, description, tags.", "bookmarkSearch": "Busqueda de marcadores", "noteSearch": "Busqueda de notas", "fieldHeader": "CAMPO", "exampleHeader": "EJEMPLO", "complexExamples": "Ejemplos mas complejos", "complexExample1Desc": "\"youtube\" en la url, y titulo de \"haskell\" o titulo de \"python\" y despues del 31/12/2017", - "complexExample2Desc": "\"hacker news\" no en el titulo, y \"news\", \"cnn\", \"npr\" en cualquier parte, o \"the guardian\" en la descripcion" + "complexExample2Desc": "\"hacker news\" no en el titulo, y \"news\", \"cnn\", \"npr\" en cualquier parte, o \"the guardian\" en la descripcion", + "complexExample3Desc": "etiquetado con \"haskell\" y \"youtube\", o no etiquetado con \"haskell\" y \"vimeo\" a la vez; y no etiquetado con \"surveys\" y \"news\" a la vez, y despues del 2018-12-31" } }
static/locales/fr/translation.json view
@@ -17,7 +17,12 @@ "error": "erreur : {{status}}", "errorWithMsg": "erreur {{status}} : {{msg}}", "requestTimedOut": "délai de la requête dépassé", - "networkError": "erreur réseau" + "networkError": "erreur réseau", + "upsertUnauthorized": "non autorisé", + "upsertNotFound": "introuvable", + "upsertHrefUsedByOther": "url déjà utilisée par un autre signet", + "upsertConflictWithNewer": "l'élément sur le serveur a été mis à jour plus récemment ; rechargez et réessayez", + "upsertInvalidInput": "entrée invalide" }, "nav": { "privateProfileEnabled": "profil privé activé", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Ancien mot de passe", "newPassword": "Nouveau mot de passe", - "submit": "Enregistrer les modifications" + "submit": "Enregistrer les modifications", + "demoMode": "mode démo : la modification du mot de passe est désactivée" }, "settings": { "serverDefault": "Par defaut du serveur", @@ -100,9 +106,19 @@ "pagination": { "perPage": "par page :" }, + "sort": { + "label": "trier :", + "time": "date", + "url": "url", + "title": "titre", + "tagcount": "nb tags", + "created": "créé" + }, "pager": { "earlier": "« précédent", - "later": "suivant »" + "later": "suivant »", + "previous": "« précédent", + "next": "suivant »" }, "notes": { "count_one": "{{count}} note", @@ -229,18 +245,24 @@ "betweenQuery": "entre chaque requête de recherche.", "excludeWords": "Exclure des mots de votre recherche", "inFrontWord": "devant un mot que vous souhaitez exclure.", - "exactMatch": "Rechercher une correspondance exacte", - "putInQuotes": "Mettez un mot ou une phrase entre guillemets.", + "groupTerms": "Grouper les termes de recherche", + "putInParens": "Mettez des parenthèses autour des termes pour les grouper en une seule unité. Les groupes peuvent être combinés, niés et imbriqués.", + "searchPhrase": "Rechercher une phrase", + "putInQuotes": "Mettez la phrase entre guillemets.", "specificField": "Rechercher dans un champ spécifique", "inFrontTerm": "devant le terme,", "where": "où", "isOneOfOptions": "est l'une des options ci-dessous", + "fieldContainsDesc": "Une recherche par champ est une recherche par contenu : il suffit que le champ contienne le terme.", + "exactField": "Recherche exacte sur un champ spécifique", + "exactFieldDesc": "devant le terme pour exiger que le champ entier soit exactement égal au terme. Disponible pour les champs texte : url, title, description, tags.", "bookmarkSearch": "Recherche de favoris", "noteSearch": "Recherche de notes", "fieldHeader": "CHAMP", "exampleHeader": "EXEMPLE", "complexExamples": "Exemples plus complexes", "complexExample1Desc": "\"youtube\" dans l'URL, et titre \"haskell\" ou titre \"python\" et après le 31/12/2017", - "complexExample2Desc": "\"hacker news\" pas dans le titre, et \"news\", \"cnn\", \"npr\" n'importe où, ou \"the guardian\" dans la description" + "complexExample2Desc": "\"hacker news\" pas dans le titre, et \"news\", \"cnn\", \"npr\" n'importe où, ou \"the guardian\" dans la description", + "complexExample3Desc": "étiqueté \"haskell\" et \"youtube\", ou pas étiqueté à la fois \"haskell\" et \"vimeo\" ; et pas étiqueté à la fois \"surveys\" et \"news\", et après le 2018-12-31" } }
static/locales/it/translation.json view
@@ -17,7 +17,12 @@ "error": "errore: {{status}}", "errorWithMsg": "errore {{status}}: {{msg}}", "requestTimedOut": "richiesta scaduta", - "networkError": "errore di rete" + "networkError": "errore di rete", + "upsertUnauthorized": "non autorizzato", + "upsertNotFound": "non trovato", + "upsertHrefUsedByOther": "url già utilizzato da un altro segnalibro", + "upsertConflictWithNewer": "l'elemento sul server è stato aggiornato più di recente; ricarica e riprova", + "upsertInvalidInput": "input non valido" }, "nav": { "privateProfileEnabled": "profilo privato abilitato", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Vecchia password", "newPassword": "Nuova password", - "submit": "Salva modifiche" + "submit": "Salva modifiche", + "demoMode": "modalità demo: la modifica della password è disabilitata" }, "settings": { "serverDefault": "Predefinito del server", @@ -100,9 +106,19 @@ "pagination": { "perPage": "per pagina:" }, + "sort": { + "label": "ordina:", + "time": "data", + "url": "url", + "title": "titolo", + "tagcount": "conteggio tag", + "created": "creato" + }, "pager": { "earlier": "« precedenti", - "later": "successivi »" + "later": "successivi »", + "previous": "« precedente", + "next": "successivo »" }, "notes": { "count_one": "{{count}} nota", @@ -229,18 +245,24 @@ "betweenQuery": "tra ogni query di ricerca.", "excludeWords": "Escludi parole dalla ricerca", "inFrontWord": "davanti a una parola che vuoi omettere.", - "exactMatch": "Cerca una corrispondenza esatta", - "putInQuotes": "Metti una parola o una frase tra virgolette.", + "groupTerms": "Raggruppa i termini di ricerca", + "putInParens": "Metti i termini tra parentesi per raggrupparli in una singola unità. I gruppi possono essere combinati, negati e annidati.", + "searchPhrase": "Cerca una frase", + "putInQuotes": "Metti la frase tra virgolette.", "specificField": "Cerca in un campo specifico", "inFrontTerm": "davanti al termine,", "where": "dove", "isOneOfOptions": "e una delle opzioni seguenti", + "fieldContainsDesc": "Una ricerca per campo e una ricerca per contenuto: e sufficiente che il campo contenga il termine.", + "exactField": "Ricerca esatta su un campo specifico", + "exactFieldDesc": "davanti al termine per richiedere che l'intero campo sia esattamente uguale al termine. Disponibile per i campi di testo: url, title, description, tags.", "bookmarkSearch": "Ricerca segnalibri", "noteSearch": "Ricerca note", "fieldHeader": "CAMPO", "exampleHeader": "ESEMPIO", "complexExamples": "Esempi piu complessi", "complexExample1Desc": "\"youtube\" nell'url, e titolo di \"haskell\" o titolo di \"python\" e dopo il 31/12/2017", - "complexExample2Desc": "\"hacker news\" non nel titolo, e \"news\", \"cnn\", \"npr\" ovunque, o \"the guardian\" nella descrizione" + "complexExample2Desc": "\"hacker news\" non nel titolo, e \"news\", \"cnn\", \"npr\" ovunque, o \"the guardian\" nella descrizione", + "complexExample3Desc": "con i tag \"haskell\" e \"youtube\", oppure senza entrambi i tag \"haskell\" e \"vimeo\"; e senza entrambi i tag \"surveys\" e \"news\", e dopo il 2018-12-31" } }
static/locales/ja/translation.json view
@@ -17,7 +17,12 @@ "error": "エラー: {{status}}", "errorWithMsg": "エラー {{status}}: {{msg}}", "requestTimedOut": "リクエストがタイムアウトしました", - "networkError": "ネットワークエラー" + "networkError": "ネットワークエラー", + "upsertUnauthorized": "権限がありません", + "upsertNotFound": "見つかりません", + "upsertHrefUsedByOther": "このURLは既に別のブックマークで使用されています", + "upsertConflictWithNewer": "サーバー上の項目がより新しく更新されています。再読み込みしてやり直してください", + "upsertInvalidInput": "無効な入力です" }, "nav": { "privateProfileEnabled": "プライベートプロフィールが有効", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "現在のパスワード", "newPassword": "新しいパスワード", - "submit": "変更を保存" + "submit": "変更を保存", + "demoMode": "デモモード:パスワードの変更は無効です" }, "settings": { "serverDefault": "サーバーのデフォルト", @@ -100,9 +106,19 @@ "pagination": { "perPage": "1ページあたり:" }, + "sort": { + "label": "並び替え:", + "time": "時間", + "url": "URL", + "title": "タイトル", + "tagcount": "タグ数", + "created": "作成日" + }, "pager": { "earlier": "« 前へ", - "later": "次へ »" + "later": "次へ »", + "previous": "« 前へ", + "next": "次へ »" }, "notes": { "count_one": "{{count}}件のメモ", @@ -229,18 +245,24 @@ "betweenQuery": "を各検索クエリの間に入れます。", "excludeWords": "検索から単語を除外", "inFrontWord": "を除外したい単語の前に付けます。", - "exactMatch": "完全一致で検索", - "putInQuotes": "単語またはフレーズを引用符で囲みます。", + "groupTerms": "検索語をグループ化", + "putInParens": "語句を括弧で囲むと、ひとつのまとまりとしてグループ化できます。グループは組み合わせ、否定、入れ子にできます。", + "searchPhrase": "フレーズで検索", + "putInQuotes": "フレーズを引用符で囲みます。", "specificField": "特定のフィールドで検索", "inFrontTerm": "を語句の前に付けます、", "where": "ここで", "isOneOfOptions": "は以下のオプションのいずれかです", + "fieldContainsDesc": "フィールド検索は部分一致検索です。フィールドに語句が含まれていれば一致します。", + "exactField": "特定のフィールドで完全一致検索", + "exactFieldDesc": "を語句の前に付けると、フィールド全体が語句と完全に一致する必要があります。テキストフィールド(url、title、description、tags)で利用できます。", "bookmarkSearch": "ブックマーク検索", "noteSearch": "メモ検索", "fieldHeader": "フィールド", "exampleHeader": "例", "complexExamples": "より複雑な例", "complexExample1Desc": "URLに「youtube」、タイトルに「haskell」またはタイトルに「python」、かつ2017/12/31以降", - "complexExample2Desc": "タイトルに「hacker news」を含まず、どこかに「news」「cnn」「npr」があるか、説明に「the guardian」がある" + "complexExample2Desc": "タイトルに「hacker news」を含まず、どこかに「news」「cnn」「npr」があるか、説明に「the guardian」がある", + "complexExample3Desc": "タグに「haskell」と「youtube」の両方があるか、またはタグに「haskell」と「vimeo」の両方はない。かつタグに「surveys」と「news」の両方はなく、2018-12-31以降" } }
static/locales/ko/translation.json view
@@ -17,7 +17,12 @@ "error": "오류: {{status}}", "errorWithMsg": "오류 {{status}}: {{msg}}", "requestTimedOut": "요청 시간 초과", - "networkError": "네트워크 오류" + "networkError": "네트워크 오류", + "upsertUnauthorized": "권한이 없습니다", + "upsertNotFound": "찾을 수 없음", + "upsertHrefUsedByOther": "이 url은 이미 다른 북마크에서 사용 중입니다", + "upsertConflictWithNewer": "서버의 항목이 더 최근에 업데이트되었습니다. 새로고침 후 다시 시도하세요", + "upsertInvalidInput": "잘못된 입력입니다" }, "nav": { "privateProfileEnabled": "비공개 프로필 활성화됨", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "기존 비밀번호", "newPassword": "새 비밀번호", - "submit": "변경 사항 저장" + "submit": "변경 사항 저장", + "demoMode": "데모 모드: 비밀번호 변경이 비활성화되어 있습니다" }, "settings": { "serverDefault": "서버 기본값", @@ -100,9 +106,19 @@ "pagination": { "perPage": "페이지당:" }, + "sort": { + "label": "정렬:", + "time": "시간", + "url": "URL", + "title": "제목", + "tagcount": "태그 수", + "created": "생성일" + }, "pager": { "earlier": "« 이전", - "later": "다음 »" + "later": "다음 »", + "previous": "« 이전", + "next": "다음 »" }, "notes": { "count_one": "노트 {{count}}개", @@ -229,18 +245,24 @@ "betweenQuery": "각 검색어 사이에 넣으세요.", "excludeWords": "검색에서 단어 제외하기", "inFrontWord": "빼고 싶은 단어 앞에 붙이세요.", - "exactMatch": "정확히 일치하는 항목 검색", - "putInQuotes": "단어 또는 구문을 따옴표 안에 넣으세요.", + "groupTerms": "검색어 그룹화", + "putInParens": "괄호로 검색어를 묶으면 하나의 단위로 그룹화됩니다. 그룹은 결합, 부정, 중첩할 수 있습니다.", + "searchPhrase": "구문 검색", + "putInQuotes": "구문을 따옴표 안에 넣으세요.", "specificField": "특정 필드에서 검색", "inFrontTerm": "용어 앞에 붙이세요,", "where": "여기서", "isOneOfOptions": "는 아래 옵션 중 하나입니다", + "fieldContainsDesc": "필드 검색은 포함 검색입니다. 필드에 검색어가 포함되어 있으면 일치합니다.", + "exactField": "특정 필드에서 정확히 일치 검색", + "exactFieldDesc": "을 검색어 앞에 붙이면 필드 전체가 검색어와 정확히 일치해야 합니다. 텍스트 필드(url, title, description, tags)에서 사용할 수 있습니다.", "bookmarkSearch": "북마크 검색", "noteSearch": "노트 검색", "fieldHeader": "필드", "exampleHeader": "예시", "complexExamples": "더 복잡한 예시", "complexExample1Desc": "url에 \"youtube\"가 있고, 제목에 \"haskell\" 또는 제목에 \"python\"이 있으며 2017-12-31 이후", - "complexExample2Desc": "제목에는 \"hacker news\"가 없고, 어디에나 \"news\", \"cnn\", \"npr\"이 있거나 설명에 \"the guardian\"이 있음" + "complexExample2Desc": "제목에는 \"hacker news\"가 없고, 어디에나 \"news\", \"cnn\", \"npr\"이 있거나 설명에 \"the guardian\"이 있음", + "complexExample3Desc": "\"haskell\"과 \"youtube\" 태그가 모두 있거나, \"haskell\"과 \"vimeo\" 태그가 모두 있지는 않음; 그리고 \"surveys\"와 \"news\" 태그가 모두 있지는 않으며, 2018-12-31 이후" } }
static/locales/pl/translation.json view
@@ -17,7 +17,12 @@ "error": "błąd: {{status}}", "errorWithMsg": "błąd {{status}}: {{msg}}", "requestTimedOut": "przekroczono limit czasu żądania", - "networkError": "błąd sieci" + "networkError": "błąd sieci", + "upsertUnauthorized": "brak autoryzacji", + "upsertNotFound": "nie znaleziono", + "upsertHrefUsedByOther": "adres url jest już używany przez inną zakładkę", + "upsertConflictWithNewer": "element na serwerze został zaktualizowany później; odśwież i spróbuj ponownie", + "upsertInvalidInput": "nieprawidłowe dane wejściowe" }, "nav": { "privateProfileEnabled": "profil prywatny wlaczony", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Stare hasło", "newPassword": "Nowe hasło", - "submit": "Zapisz zmiany" + "submit": "Zapisz zmiany", + "demoMode": "tryb demo: zmiana hasła jest wyłączona" }, "settings": { "serverDefault": "Domyslne ustawienie serwera", @@ -100,9 +106,19 @@ "pagination": { "perPage": "na stronę:" }, + "sort": { + "label": "sortuj:", + "time": "czas", + "url": "url", + "title": "tytuł", + "tagcount": "liczba tagów", + "created": "utworzono" + }, "pager": { "earlier": "« wcześniejsze", - "later": "późniejsze »" + "later": "późniejsze »", + "previous": "« poprzednia", + "next": "następna »" }, "notes": { "count_one": "{{count}} notatka", @@ -229,18 +245,24 @@ "betweenQuery": "między każdym zapytaniem wyszukiwania.", "excludeWords": "Wyklucz słowa z wyszukiwania", "inFrontWord": "przed słowem, które chcesz wykluczyć.", - "exactMatch": "Wyszukaj dokładne dopasowanie", - "putInQuotes": "Umieść słowo lub frazę w cudzysłowie.", + "groupTerms": "Grupowanie terminów wyszukiwania", + "putInParens": "Umieść terminy w nawiasach, aby zgrupować je w jedną całość. Grupy można łączyć, negować i zagnieżdżać.", + "searchPhrase": "Wyszukaj frazę", + "putInQuotes": "Umieść frazę w cudzysłowie.", "specificField": "Wyszukaj w określonym polu", "inFrontTerm": "przed terminem,", "where": "gdzie", "isOneOfOptions": "jest jedną z poniższych opcji", + "fieldContainsDesc": "Wyszukiwanie po polu sprawdza zawieranie: pole musi jedynie zawierać dany termin.", + "exactField": "Dokładne wyszukiwanie w określonym polu", + "exactFieldDesc": "przed terminem, aby całe pole musiało być dokładnie równe terminowi. Dostępne dla pól tekstowych: url, title, description, tags.", "bookmarkSearch": "Wyszukiwanie zakładek", "noteSearch": "Wyszukiwanie notatek", "fieldHeader": "POLE", "exampleHeader": "PRZYKŁAD", "complexExamples": "Bardziej złożone przykłady", "complexExample1Desc": "\"youtube\" w URL oraz tytuł \"haskell\" lub tytuł \"python\" i po 31.12.2017", - "complexExample2Desc": "\"hacker news\" nie w tytule, oraz \"news\", \"cnn\", \"npr\" gdziekolwiek lub \"the guardian\" w opisie" + "complexExample2Desc": "\"hacker news\" nie w tytule, oraz \"news\", \"cnn\", \"npr\" gdziekolwiek lub \"the guardian\" w opisie", + "complexExample3Desc": "z tagami \"haskell\" i \"youtube\", lub bez obu tagów \"haskell\" i \"vimeo\"; oraz bez obu tagów \"surveys\" i \"news\", i po 2018-12-31" } }
static/locales/pt-BR/translation.json view
@@ -17,7 +17,12 @@ "error": "erro: {{status}}", "errorWithMsg": "erro {{status}}: {{msg}}", "requestTimedOut": "tempo de requisição esgotado", - "networkError": "erro de rede" + "networkError": "erro de rede", + "upsertUnauthorized": "não autorizado", + "upsertNotFound": "não encontrado", + "upsertHrefUsedByOther": "a url já está sendo usada por outro favorito", + "upsertConflictWithNewer": "o item no servidor foi atualizado mais recentemente; recarregue e tente novamente", + "upsertInvalidInput": "entrada inválida" }, "nav": { "privateProfileEnabled": "perfil privado ativado", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Senha antiga", "newPassword": "Nova senha", - "submit": "Salvar alteracoes" + "submit": "Salvar alteracoes", + "demoMode": "modo de demonstracao: alteracoes de senha estao desabilitadas" }, "settings": { "serverDefault": "Padrao do servidor", @@ -100,9 +106,19 @@ "pagination": { "perPage": "por pagina:" }, + "sort": { + "label": "ordenar:", + "time": "hora", + "url": "url", + "title": "título", + "tagcount": "tags", + "created": "criado" + }, "pager": { "earlier": "« anteriores", - "later": "proximos »" + "later": "proximos »", + "previous": "« anterior", + "next": "próximo »" }, "notes": { "count_one": "{{count}} nota", @@ -229,18 +245,24 @@ "betweenQuery": "entre cada consulta de busca.", "excludeWords": "Excluir palavras da busca", "inFrontWord": "na frente de uma palavra que voce quer omitir.", - "exactMatch": "Buscar uma correspondencia exata", - "putInQuotes": "Coloque uma palavra ou frase entre aspas.", + "groupTerms": "Agrupar termos de busca", + "putInParens": "Coloque parenteses ao redor dos termos para agrupa-los em uma unica unidade. Grupos podem ser combinados, negados e aninhados.", + "searchPhrase": "Buscar uma frase", + "putInQuotes": "Coloque a frase entre aspas.", "specificField": "Buscar em um campo especifico", "inFrontTerm": "na frente do termo,", "where": "onde", "isOneOfOptions": "e uma das opcoes abaixo", + "fieldContainsDesc": "Uma busca por campo e uma busca por conteudo: basta que o campo contenha o termo.", + "exactField": "Busca exata em um campo especifico", + "exactFieldDesc": "na frente do termo para exigir que o campo inteiro seja exatamente igual ao termo. Disponivel para campos de texto: url, title, description, tags.", "bookmarkSearch": "Busca de favoritos", "noteSearch": "Busca de notas", "fieldHeader": "CAMPO", "exampleHeader": "EXEMPLO", "complexExamples": "Exemplos mais complexos", "complexExample1Desc": "\"youtube\" na url, e titulo com \"haskell\" ou titulo com \"python\" e depois de 31/12/2017", - "complexExample2Desc": "\"hacker news\" nao no titulo, e \"news\", \"cnn\", \"npr\" em qualquer lugar, ou \"the guardian\" na descricao" + "complexExample2Desc": "\"hacker news\" nao no titulo, e \"news\", \"cnn\", \"npr\" em qualquer lugar, ou \"the guardian\" na descricao", + "complexExample3Desc": "com as tags \"haskell\" e \"youtube\", ou sem ambas as tags \"haskell\" e \"vimeo\"; e sem ambas as tags \"surveys\" e \"news\", e depois de 2018-12-31" } }
static/locales/ru/translation.json view
@@ -17,7 +17,12 @@ "error": "ошибка: {{status}}", "errorWithMsg": "ошибка {{status}}: {{msg}}", "requestTimedOut": "время ожидания запроса истекло", - "networkError": "ошибка сети" + "networkError": "ошибка сети", + "upsertUnauthorized": "нет доступа", + "upsertNotFound": "не найдено", + "upsertHrefUsedByOther": "url уже используется другой закладкой", + "upsertConflictWithNewer": "элемент на сервере был обновлён позже; перезагрузите и повторите попытку", + "upsertInvalidInput": "недопустимые данные" }, "nav": { "privateProfileEnabled": "приватный профиль включён", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Старый пароль", "newPassword": "Новый пароль", - "submit": "Сохранить изменения" + "submit": "Сохранить изменения", + "demoMode": "демо-режим: изменение пароля отключено" }, "settings": { "serverDefault": "По умолчанию на сервере", @@ -100,9 +106,19 @@ "pagination": { "perPage": "на странице:" }, + "sort": { + "label": "сортировать:", + "time": "время", + "url": "url", + "title": "заголовок", + "tagcount": "кол-во тегов", + "created": "создано" + }, "pager": { "earlier": "« ранее", - "later": "позже »" + "later": "позже »", + "previous": "« предыдущая", + "next": "следующая »" }, "notes": { "count_one": "{{count}} заметка", @@ -229,18 +245,24 @@ "betweenQuery": "между каждым поисковым запросом.", "excludeWords": "Исключить слова из поиска", "inFrontWord": "перед словом, которое хотите исключить.", - "exactMatch": "Поиск точного совпадения", - "putInQuotes": "Заключите слово или фразу в кавычки.", + "groupTerms": "Группировка условий поиска", + "putInParens": "Заключите условия в скобки, чтобы объединить их в одну группу. Группы можно комбинировать, отрицать и вкладывать друг в друга.", + "searchPhrase": "Поиск фразы", + "putInQuotes": "Заключите фразу в кавычки.", "specificField": "Поиск в определённом поле", "inFrontTerm": "перед термином,", "where": "где", "isOneOfOptions": "является одним из вариантов ниже", + "fieldContainsDesc": "Поиск по полю — это поиск по вхождению: достаточно, чтобы поле содержало термин.", + "exactField": "Точный поиск в определённом поле", + "exactFieldDesc": "перед термином, чтобы всё поле точно совпадало с термином. Доступно для текстовых полей: url, title, description, tags.", "bookmarkSearch": "Поиск закладок", "noteSearch": "Поиск заметок", "fieldHeader": "ПОЛЕ", "exampleHeader": "ПРИМЕР", "complexExamples": "Более сложные примеры", "complexExample1Desc": "«youtube» в URL, и заголовок «haskell» или заголовок «python» и после 31.12.2017", - "complexExample2Desc": "«hacker news» не в заголовке, и «news», «cnn», «npr» где угодно, или «the guardian» в описании" + "complexExample2Desc": "«hacker news» не в заголовке, и «news», «cnn», «npr» где угодно, или «the guardian» в описании", + "complexExample3Desc": "с тегами «haskell» и «youtube», или без обоих тегов «haskell» и «vimeo»; и без обоих тегов «surveys» и «news», и после 2018-12-31" } }
static/locales/tr/translation.json view
@@ -17,7 +17,12 @@ "error": "hata: {{status}}", "errorWithMsg": "hata {{status}}: {{msg}}", "requestTimedOut": "istek zaman aşımına uğradı", - "networkError": "ağ hatası" + "networkError": "ağ hatası", + "upsertUnauthorized": "yetkisiz", + "upsertNotFound": "bulunamadı", + "upsertHrefUsedByOther": "bu url zaten başka bir yer imi tarafından kullanılıyor", + "upsertConflictWithNewer": "sunucudaki öğe daha yakın zamanda güncellendi; yeniden yükleyip tekrar deneyin", + "upsertInvalidInput": "geçersiz girdi" }, "nav": { "privateProfileEnabled": "ozel profil etkin", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Eski sifre", "newPassword": "Yeni sifre", - "submit": "Degisiklikleri kaydet" + "submit": "Degisiklikleri kaydet", + "demoMode": "demo modu: sifre degisiklikleri devre disi" }, "settings": { "serverDefault": "Sunucu varsayilani", @@ -100,9 +106,19 @@ "pagination": { "perPage": "sayfa basi:" }, + "sort": { + "label": "sırala:", + "time": "zaman", + "url": "url", + "title": "başlık", + "tagcount": "etiket sayısı", + "created": "oluşturuldu" + }, "pager": { "earlier": "« onceki", - "later": "sonraki »" + "later": "sonraki »", + "previous": "« önceki", + "next": "sonraki »" }, "notes": { "count_one": "{{count}} not", @@ -229,18 +245,24 @@ "betweenQuery": "her arama sorgusunun arasina.", "excludeWords": "Aramadan kelime cikar", "inFrontWord": "haric tutmak istediginiz kelimenin onune koyun.", - "exactMatch": "Tam eslesme ara", - "putInQuotes": "Bir kelimeyi veya ifadeyi tirnak icine alin.", + "groupTerms": "Arama terimlerini gruplama", + "putInParens": "Terimleri tek bir birim olarak gruplamak icin parantez icine alin. Gruplar birlestirilebilir, olumsuzlanabilir ve ic ice kullanilabilir.", + "searchPhrase": "Bir ifade ara", + "putInQuotes": "Ifadeyi tirnak icine alin.", "specificField": "Belirli bir alanda ara", "inFrontTerm": "terimin onune koyun,", "where": "burada", "isOneOfOptions": "asagidaki seceneklerden biridir", + "fieldContainsDesc": "Alan aramasi bir icerme aramasidir: alanin terimi icermesi yeterlidir.", + "exactField": "Belirli bir alanda tam eslesme aramasi", + "exactFieldDesc": "terimin onune koyun; alanin tamami terime tam olarak esit olmalidir. Metin alanlari icin gecerlidir: url, title, description, tags.", "bookmarkSearch": "Yer imi aramasi", "noteSearch": "Not aramasi", "fieldHeader": "ALAN", "exampleHeader": "ORNEK", "complexExamples": "Daha karmasik ornekler", "complexExample1Desc": "url icinde \"youtube\", ve baslikta \"haskell\" veya baslikta \"python\" ve 31/12/2017 sonrasinda", - "complexExample2Desc": "baslikta \"hacker news\" yok, ve herhangi bir yerde \"news\", \"cnn\", \"npr\", veya aciklamada \"the guardian\"" + "complexExample2Desc": "baslikta \"hacker news\" yok, ve herhangi bir yerde \"news\", \"cnn\", \"npr\", veya aciklamada \"the guardian\"", + "complexExample3Desc": "\"haskell\" ve \"youtube\" etiketlerinin ikisi de var, veya \"haskell\" ve \"vimeo\" etiketlerinin ikisi birden yok; ve \"surveys\" ile \"news\" etiketlerinin ikisi birden yok, ve 2018-12-31 sonrasinda" } }
static/locales/uk/translation.json view
@@ -17,7 +17,12 @@ "error": "помилка: {{status}}", "errorWithMsg": "помилка {{status}}: {{msg}}", "requestTimedOut": "час очікування запиту вичерпано", - "networkError": "помилка мережі" + "networkError": "помилка мережі", + "upsertUnauthorized": "немає доступу", + "upsertNotFound": "не знайдено", + "upsertHrefUsedByOther": "ця url-адреса вже використовується іншою закладкою", + "upsertConflictWithNewer": "елемент на сервері було оновлено пізніше; перезавантажте та спробуйте ще раз", + "upsertInvalidInput": "недійсні дані" }, "nav": { "privateProfileEnabled": "приватний профіль увімкнено", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "Старий пароль", "newPassword": "Новий пароль", - "submit": "Зберегти зміни" + "submit": "Зберегти зміни", + "demoMode": "демо-режим: зміну пароля вимкнено" }, "settings": { "serverDefault": "Типове значення сервера", @@ -100,9 +106,19 @@ "pagination": { "perPage": "на сторінці:" }, + "sort": { + "label": "сортувати:", + "time": "час", + "url": "url", + "title": "заголовок", + "tagcount": "кількість тегів", + "created": "створено" + }, "pager": { "earlier": "« раніше", - "later": "пізніше »" + "later": "пізніше »", + "previous": "« попередня", + "next": "наступна »" }, "notes": { "count_one": "{{count}} нотатка", @@ -229,18 +245,24 @@ "betweenQuery": "між кожним пошуковим запитом.", "excludeWords": "Виключення слів із пошуку", "inFrontWord": "перед словом, яке потрібно виключити.", - "exactMatch": "Пошук точного збігу", - "putInQuotes": "Візьміть слово або фразу в лапки.", + "groupTerms": "Групування пошукових термінів", + "putInParens": "Візьміть терміни в дужки, щоб об'єднати їх в одну групу. Групи можна комбінувати, заперечувати та вкладати одна в одну.", + "searchPhrase": "Пошук фрази", + "putInQuotes": "Візьміть фразу в лапки.", "specificField": "Пошук у конкретному полі", "inFrontTerm": "перед терміном,", "where": "де", "isOneOfOptions": "є одним із варіантів нижче", + "fieldContainsDesc": "Пошук за полем — це пошук за входженням: достатньо, щоб поле містило термін.", + "exactField": "Точний пошук у конкретному полі", + "exactFieldDesc": "перед терміном, щоб усе поле точно збігалося з терміном. Доступно для текстових полів: url, title, description, tags.", "bookmarkSearch": "Пошук закладок", "noteSearch": "Пошук нотаток", "fieldHeader": "ПОЛЕ", "exampleHeader": "ПРИКЛАД", "complexExamples": "Складніші приклади", "complexExample1Desc": "\"youtube\" в url, і назва містить \"haskell\" або назва містить \"python\", і після 31.12.2017", - "complexExample2Desc": "\"hacker news\" не в назві, а \"news\", \"cnn\", \"npr\" будь-де, або \"the guardian\" в описі" + "complexExample2Desc": "\"hacker news\" не в назві, а \"news\", \"cnn\", \"npr\" будь-де, або \"the guardian\" в описі", + "complexExample3Desc": "з тегами \"haskell\" і \"youtube\", або без обох тегів \"haskell\" і \"vimeo\"; та без обох тегів \"surveys\" і \"news\", і після 2018-12-31" } }
static/locales/zh-Hans/translation.json view
@@ -17,7 +17,12 @@ "error": "错误:{{status}}", "errorWithMsg": "错误 {{status}}:{{msg}}", "requestTimedOut": "请求超时", - "networkError": "网络错误" + "networkError": "网络错误", + "upsertUnauthorized": "未授权", + "upsertNotFound": "未找到", + "upsertHrefUsedByOther": "该网址已被其他书签使用", + "upsertConflictWithNewer": "服务器上的条目已被更近期地更新;请重新加载后重试", + "upsertInvalidInput": "输入无效" }, "nav": { "privateProfileEnabled": "已启用私密个人资料", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "旧密码", "newPassword": "新密码", - "submit": "保存更改" + "submit": "保存更改", + "demoMode": "演示模式:密码修改已禁用" }, "settings": { "serverDefault": "服务器默认值", @@ -100,9 +106,19 @@ "pagination": { "perPage": "每页:" }, + "sort": { + "label": "排序:", + "time": "时间", + "url": "网址", + "title": "标题", + "tagcount": "标签数", + "created": "创建时间" + }, "pager": { "earlier": "« 更早", - "later": "更晚 »" + "later": "更晚 »", + "previous": "« 上一页", + "next": "下一页 »" }, "notes": { "count_one": "{{count}} 条笔记", @@ -229,18 +245,24 @@ "betweenQuery": "放在每个搜索查询之间。", "excludeWords": "从搜索中排除词语", "inFrontWord": "放在你想排除的词前面。", - "exactMatch": "搜索精确匹配", - "putInQuotes": "将单词或短语放在引号中。", + "groupTerms": "使用括号分组搜索词", + "putInParens": "用括号将搜索词括起来,使其成为一个整体。分组可以组合、取反和嵌套。", + "searchPhrase": "搜索短语", + "putInQuotes": "将短语放在引号中。", "specificField": "在特定字段中搜索", "inFrontTerm": "放在词项前面,", "where": "其中", "isOneOfOptions": "是下面的选项之一", + "fieldContainsDesc": "字段搜索是包含搜索:字段只需包含该词项即可匹配。", + "exactField": "在特定字段中精确搜索", + "exactFieldDesc": "放在词项前面,要求整个字段与词项完全相等。适用于文本字段:url、title、description、tags。", "bookmarkSearch": "书签搜索", "noteSearch": "笔记搜索", "fieldHeader": "字段", "exampleHeader": "示例", "complexExamples": "更复杂的示例", "complexExample1Desc": "url 中包含 \"youtube\",标题中包含 \"haskell\" 或标题中包含 \"python\",并且日期晚于 2017/12/31", - "complexExample2Desc": "标题中不包含 \"hacker news\",并且任意位置包含 \"news\"、\"cnn\"、\"npr\",或者描述中包含 \"the guardian\"" + "complexExample2Desc": "标题中不包含 \"hacker news\",并且任意位置包含 \"news\"、\"cnn\"、\"npr\",或者描述中包含 \"the guardian\"", + "complexExample3Desc": "标签同时包含 \"haskell\" 和 \"youtube\",或者标签不同时包含 \"haskell\" 和 \"vimeo\";并且标签不同时包含 \"surveys\" 和 \"news\",且在 2018-12-31 之后" } }
static/locales/zh-Hant/translation.json view
@@ -17,7 +17,12 @@ "error": "錯誤:{{status}}", "errorWithMsg": "錯誤 {{status}}:{{msg}}", "requestTimedOut": "請求逾時", - "networkError": "網路錯誤" + "networkError": "網路錯誤", + "upsertUnauthorized": "未授權", + "upsertNotFound": "找不到", + "upsertHrefUsedByOther": "此網址已被其他書籤使用", + "upsertConflictWithNewer": "伺服器上的項目已被更近期地更新;請重新載入後再試一次", + "upsertInvalidInput": "輸入無效" }, "nav": { "privateProfileEnabled": "已啟用私人個人資料", @@ -42,7 +47,8 @@ "changePassword": { "oldPassword": "舊密碼", "newPassword": "新密碼", - "submit": "儲存變更" + "submit": "儲存變更", + "demoMode": "示範模式:密碼修改已停用" }, "settings": { "serverDefault": "伺服器預設值", @@ -100,9 +106,19 @@ "pagination": { "perPage": "每頁:" }, + "sort": { + "label": "排序:", + "time": "時間", + "url": "網址", + "title": "標題", + "tagcount": "標籤數", + "created": "建立時間" + }, "pager": { "earlier": "« 較早", - "later": "較晚 »" + "later": "較晚 »", + "previous": "« 上一頁", + "next": "下一頁 »" }, "notes": { "count_one": "{{count}} 條筆記", @@ -229,18 +245,24 @@ "betweenQuery": "放在每個搜尋查詢之間。", "excludeWords": "從搜尋中排除字詞", "inFrontWord": "放在想排除字詞的前面。", - "exactMatch": "搜尋完全相符的內容", - "putInQuotes": "將單字或片語放在引號內。", + "groupTerms": "使用括號分組搜尋詞", + "putInParens": "用括號將搜尋詞括起來,使其成為一個整體。分組可以組合、否定與巢狀使用。", + "searchPhrase": "搜尋片語", + "putInQuotes": "將片語放在引號內。", "specificField": "針對特定欄位搜尋", "inFrontTerm": "放在查詢詞前面,", "where": "其中", "isOneOfOptions": "是下列選項之一", + "fieldContainsDesc": "欄位搜尋是包含搜尋:欄位只需包含該查詢詞即可符合。", + "exactField": "針對特定欄位精確搜尋", + "exactFieldDesc": "放在查詢詞前面,要求整個欄位與查詢詞完全相等。適用於文字欄位:url、title、description、tags。", "bookmarkSearch": "書籤搜尋", "noteSearch": "筆記搜尋", "fieldHeader": "欄位", "exampleHeader": "範例", "complexExamples": "更複雜的範例", "complexExample1Desc": "URL 中含有 \"youtube\",且標題為 \"haskell\" 或標題為 \"python\",並且在 2017/12/31 之後", - "complexExample2Desc": "標題中不含 \"hacker news\",且任意位置包含 \"news\"、\"cnn\"、\"npr\",或描述中包含 \"the guardian\"" + "complexExample2Desc": "標題中不含 \"hacker news\",且任意位置包含 \"news\"、\"cnn\"、\"npr\",或描述中包含 \"the guardian\"", + "complexExample3Desc": "標籤同時包含 \"haskell\" 與 \"youtube\",或標籤未同時包含 \"haskell\" 與 \"vimeo\";且標籤未同時包含 \"surveys\" 與 \"news\",並在 2018-12-31 之後" } }
templates/docs-search.hamlet view
@@ -21,14 +21,25 @@ <p .ml3>#{t "docs.put"} <span class="code fw9 docs-item-bg">-</span> #{t "docs.inFrontWord"} <br>#{t "docs.forExample"} <span class="code fw9 docs-item-bg">-car</span> - <h3>#{t "docs.exactMatch"} + <h3>#{t "docs.groupTerms"} + <p .ml3>#{t "docs.putInParens"} + <br>#{t "docs.forExample"} <span class="code fw9 docs-item-bg">(marathon|race) -(car|bike)</span> + + <h3>#{t "docs.searchPhrase"} <p .ml3>#{t "docs.putInQuotes"} <br>#{t "docs.forExample"} <span class="code fw9 docs-item-bg">"tallest building"</span> - + <h3>#{t "docs.specificField"} <p .ml3> #{t "docs.put"} <span class="code fw9 docs-item-bg"><span class="i">field</span>:</span> #{t "docs.inFrontTerm"} #{t "docs.where"} <span class="code fw9 docs-item-bg"><span class="i">field</span></span> #{t "docs.isOneOfOptions"} + <br>#{t "docs.fieldContainsDesc"} + + <h3>#{t "docs.exactField"} + <p .ml3> + #{t "docs.put"} <span class="code fw9 docs-item-bg"><span class="i">field</span>=</span> #{t "docs.exactFieldDesc"} + <br>#{t "docs.forExample"} <span class="code fw9 docs-item-bg">tags=linux</span> <span class="code fw9 docs-item-bg">title="hacker news"</span> + <div .ml3> <div .f5.fw6.pb3.underline>#{t "docs.bookmarkSearch"} <table .collapse.ba.br2.thm-border-doc-table.pv2.ph3> @@ -85,5 +96,9 @@ <div .ml3.pt3> <span>#{t "docs.complexExample2Desc"} <br><span class="mw6 overflow-x-scroll nowrap db mt1 pa2 code fw9 docs-item-bg">-ti:"hacker news" news|cnn|npr|d:"the guardian" + + <div .ml3.pt3> + <span>#{t "docs.complexExample3Desc"} + <br><span class="mw6 overflow-x-scroll nowrap db mt1 pa2 code fw9 docs-item-bg">(t:haskell t:youtube)|-(t:haskell t:vimeo) -(t:surveys t:news) a:2018-12-31
templates/notes.hamlet view
@@ -4,9 +4,10 @@ <div .fr.nt1.nowrap style="margin-bottom:.7rem"> <div .dib.v-mid.f6.pr2> <a .link.rss - href="@{NotesFeedR unamep}">#{t "rss"} - <div .dib.v-mid> - ^{search} + href="@?{(NotesFeedR unamep, catMaybes [mqueryp, msortp, morderp])}">#{t "rss"} + $if isowner + <div .dib.v-mid> + ^{search} <div .di> <div .fl.pr3.dib.mb2> <b> @@ -16,16 +17,29 @@ $if isowner <div .fl.pr2.dib.mb2> <a .dib.mb1.link.silver.hover-alt :sharedp == SharedAll:.nav-active - href="@{NotesR unamep}">#{t "filter.all"} + href="@?{(NotesR unamep, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.all"} ‧ <a .link.dib.mb1.silver.hover-alt :sharedp == SharedPrivate:.nav-active - href="@{NotesSharedR unamep SharedPrivate}">#{t "filter.private"} + href="@?{(NotesSharedR unamep SharedPrivate, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.private"} ‧ <a .link.dib.mb1.silver.hover-alt :sharedp == SharedPublic:.nav-active - href="@{NotesSharedR unamep SharedPublic}">#{t "filter.public"} + href="@?{(NotesSharedR unamep SharedPublic, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.public"} <div .cf> + $if isowner + $maybe route <- mroute + <span .f6.dib.mb2 #sort-controls> + <span .silver.mr1.dib.mb1>#{t "sort.label"} + <a .link.dib.mb1.silver.hover-alt :nsortField == NoteSortCreated:.nav-active #sort-created href="@?{(route, catMaybes [mqueryp, Just (sortp, "created"), morderp])}">#{t "sort.created"}</a> + ‧ + <a .link.dib.mb1.silver.hover-alt :nsortField == NoteSortTitle:.nav-active #sort-title href="@?{(route, catMaybes [mqueryp, Just (sortp, "title"), morderp])}">#{t "sort.title"}</a> + <span .silver.mr1.ml2.dib.mb1> + <span .nowrap.dib.mb1> + <a .link.silver.hover-alt :nsortDir == SortAsc:.nav-active #order-asc href="@?{(route, catMaybes [mqueryp, msortp, Just (orderp, "asc")])}">▲</a> + ‧ + <a .link.ml1.silver.hover-alt :nsortDir == SortDesc:.nav-active #order-desc href="@?{(route, catMaybes [mqueryp, msortp, Just (orderp, "desc")])}">▼</a> + <div .flex.items-center> ^{pager} $if isowner @@ -48,8 +62,8 @@ $maybe route <- mroute <div .dib.ml5> <span .silver.mr1>#{t "pagination.perPage"} - <a .link.pager-link :limit == 20:.nav-active href="@?{(route, catMaybes [Just ("count", "20"), mqueryp])}"‧>20</a> ‧ - <a .link.pager-link :limit == 40:.nav-active href="@?{(route, catMaybes [Just ("count", "40"), mqueryp])}"‧>40</a> ‧ - <a .link.pager-link :limit == 80:.nav-active href="@?{(route, catMaybes [Just ("count", "80"), mqueryp])}"‧>80</a> ‧ - <a .link.pager-link :limit == 120:.nav-active href="@?{(route, catMaybes [Just ("count", "120"), mqueryp])}"‧>120</a> ‧ - <a .link.pager-link :limit == 160:.nav-active href="@?{(route, catMaybes [Just ("count", "160"), mqueryp])}"‧>160</a> + <a .link.pager-link :limit == 20:.nav-active href="@?{(route, catMaybes [Just ("count", "20"), mqueryp, msortp, morderp])}"‧>20</a> ‧ + <a .link.pager-link :limit == 40:.nav-active href="@?{(route, catMaybes [Just ("count", "40"), mqueryp, msortp, morderp])}"‧>40</a> ‧ + <a .link.pager-link :limit == 80:.nav-active href="@?{(route, catMaybes [Just ("count", "80"), mqueryp, msortp, morderp])}"‧>80</a> ‧ + <a .link.pager-link :limit == 120:.nav-active href="@?{(route, catMaybes [Just ("count", "120"), mqueryp, msortp, morderp])}"‧>120</a> ‧ + <a .link.pager-link :limit == 160:.nav-active href="@?{(route, catMaybes [Just ("count", "160"), mqueryp, msortp, morderp])}"‧>160</a>
templates/pager.hamlet view
@@ -3,13 +3,17 @@ <table style="float:left" border="0"> <tbody> <tr> - $if hasEarlier - <td .dib.mr4> - $maybe queryEarlierp <- mqueryEarlierp - <a .link.pager-arrow #top_earlier href="@?{(route, catMaybes [mqueryp, Just queryEarlierp])}"> + <td .dib.mr4> + $maybe queryPreviousp <- mqueryPreviousp + <a .link.pager-arrow :not hasPrevious:.pager-invisible href="@?{(route, catMaybes [mqueryp, msortp, morderp, Just queryPreviousp])}"> + $if isCursorPaging #{t "pager.earlier"} - $if hasLater - <td .dib.mr4> - $maybe queryLaterp <- mqueryLaterp - <a .link.pager-arrow #top_later href="@?{(route, catMaybes [mqueryp, Just queryLaterp])}"> + $else + #{t "pager.previous"} + <td .dib.mr4> + $maybe queryNextp <- mqueryNextp + <a .link.pager-arrow :not hasNext:.pager-invisible href="@?{(route, catMaybes [mqueryp, msortp, morderp, Just queryNextp])}"> + $if isCursorPaging #{t "pager.later"} + $else + #{t "pager.next"}
templates/search.hamlet view
@@ -1,5 +1,9 @@ $maybe route <- mroute <form method="get" action="@{route}" onsubmit="this.classList.add('submitting')"> + $maybe s <- msort + <input type="hidden" name="sort" value="#{s}"> + $maybe o <- morder + <input type="hidden" name="order" value="#{o}"> <div .relative> $maybe _ <- mquery <a .close-x-wrap href="@{route}" title="#{t "search.clearTitle"}">
templates/user.hamlet view
@@ -5,19 +5,20 @@ <div .fr.nt1.nowrap style="margin-bottom:.7rem"> <div .dib.v-mid.f6.pr2> $if sharedp == SharedPrivate - <a .link.rss href="@?{(UserFeedSharedR unamep SharedPrivate, catMaybes [mqueryp])}">#{t "rss"} + <a .link.rss href="@?{(UserFeedSharedR unamep SharedPrivate, catMaybes [mqueryp, msortp, morderp])}">#{t "rss"} $elseif sharedp == SharedPublic - <a .link.rss href="@?{(UserFeedSharedR unamep SharedPublic, catMaybes [mqueryp])}">#{t "rss"} + <a .link.rss href="@?{(UserFeedSharedR unamep SharedPublic, catMaybes [mqueryp, msortp, morderp])}">#{t "rss"} $elseif filterp == FilterUnread - <a .link.rss href="@?{(UserFeedFilterR unamep FilterUnread, catMaybes [mqueryp])}">#{t "rss"} + <a .link.rss href="@?{(UserFeedFilterR unamep FilterUnread, catMaybes [mqueryp, msortp, morderp])}">#{t "rss"} $elseif filterp == FilterUntagged - <a .link.rss href="@?{(UserFeedFilterR unamep FilterUntagged, catMaybes [mqueryp])}">#{t "rss"} + <a .link.rss href="@?{(UserFeedFilterR unamep FilterUntagged, catMaybes [mqueryp, msortp, morderp])}">#{t "rss"} $elseif filterp == FilterStarred - <a .link.rss href="@?{(UserFeedFilterR unamep FilterStarred, catMaybes [mqueryp])}">#{t "rss"} + <a .link.rss href="@?{(UserFeedFilterR unamep FilterStarred, catMaybes [mqueryp, msortp, morderp])}">#{t "rss"} $else - <a .link.rss href="@?{(UserFeedR unamep, catMaybes [mqueryp])}">#{t "rss"} - <div .dib.v-mid> - ^{search} + <a .link.rss href="@?{(UserFeedR unamep, catMaybes [mqueryp, msortp, morderp])}">#{t "rss"} + $if isowner + <div .dib.v-mid> + ^{search} <div .di> <div .fl.pr3.dib.mb2> <b> @@ -29,26 +30,42 @@ <span .f7.silver>#{bcount}</span> $if isowner <div .fl.pr2.dib.mb2> - <a .dib.mb1.link.silver.hover-alt :isAll:.nav-active - href="@{UserR unamep}">#{t "filter.all"} - ‧ - <a .link.dib.mb1.silver.hover-alt :sharedp == SharedPrivate:.nav-active - href="@{UserSharedR unamep SharedPrivate}">#{t "filter.private"} - ‧ - <a .link.dib.mb1.silver.hover-alt :sharedp == SharedPublic:.nav-active - href="@{UserSharedR unamep SharedPublic}">#{t "filter.public"} - ‧ - <a .link.dib.mb1.silver.hover-alt :filterp == FilterUnread:.nav-active - href="@{UserFilterR unamep FilterUnread}">#{t "filter.unread"} - ‧ - <a .link.dib.mb1.silver.hover-alt :filterp == FilterUntagged:.nav-active - href="@{UserFilterR unamep FilterUntagged}">#{t "filter.untagged"} - ‧ - <a .link.dib.mb1.silver.hover-alt :filterp == FilterStarred:.nav-active - href="@{UserFilterR unamep FilterStarred}">#{t "filter.starred"} + <a .dib.mb1.link.silver.hover-alt :isAll:.nav-active + href="@?{(UserR unamep, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.all"} + ‧ + <a .link.dib.mb1.silver.hover-alt :sharedp == SharedPrivate:.nav-active + href="@?{(UserSharedR unamep SharedPrivate, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.private"} + ‧ + <a .link.dib.mb1.silver.hover-alt :sharedp == SharedPublic:.nav-active + href="@?{(UserSharedR unamep SharedPublic, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.public"} + ‧ + <a .link.dib.mb1.silver.hover-alt :filterp == FilterUnread:.nav-active + href="@?{(UserFilterR unamep FilterUnread, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.unread"} + ‧ + <a .link.dib.mb1.silver.hover-alt :filterp == FilterUntagged:.nav-active + href="@?{(UserFilterR unamep FilterUntagged, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.untagged"} + ‧ + <a .link.dib.mb1.silver.hover-alt :filterp == FilterStarred:.nav-active + href="@?{(UserFilterR unamep FilterStarred, catMaybes [mqueryp, msortp, morderp])}">#{t "filter.starred"} <div .cf> + $if isowner + <span .f6.dib.mb2 #sort-controls> + <span .silver.mr1.dib.mb1>#{t "sort.label"} + <a .link.dib.mb1.silver.hover-alt :bsortField == BookmarkSortTime:.nav-active #sort-time href="@?{(route, catMaybes [mqueryp, Just (sortp, "time"), morderp])}">#{t "sort.time"}</a> + ‧ + <a .link.dib.mb1.silver.hover-alt :bsortField == BookmarkSortUrl:.nav-active #sort-url href="@?{(route, catMaybes [mqueryp, Just (sortp, "url"), morderp])}">#{t "sort.url"}</a> + ‧ + <a .link.dib.mb1.silver.hover-alt :bsortField == BookmarkSortTitle:.nav-active #sort-title href="@?{(route, catMaybes [mqueryp, Just (sortp, "title"), morderp])}">#{t "sort.title"}</a> + ‧ + <a .link.dib.mb1.silver.hover-alt :bsortField == BookmarkSortTagCount:.nav-active #sort-tagcount href="@?{(route, catMaybes [mqueryp, Just (sortp, "tagcount"), morderp])}">#{t "sort.tagcount"}</a> + <span .silver.mr1.ml2.dib.mb1> + <span .nowrap.dib.mb1> + <a .link.silver.hover-alt :bsortDir == SortAsc:.nav-active #order-asc href="@?{(route, catMaybes [mqueryp, msortp, Just (orderp, "asc")])}">▲</a> + ‧ + <a .link.ml1.silver.hover-alt :bsortDir == SortDesc:.nav-active #order-desc href="@?{(route, catMaybes [mqueryp, msortp, Just (orderp, "desc")])}">▼</a> + <div .flex.items-center> ^{pager} $if isowner @@ -59,7 +76,35 @@ <div #bulkEditRenderEl> $if showTagCloud - <div ##{tagCloudRenderEl} .tag-cloud-placeholder> + <div .tag-cloud-placeholder> + <div .tag_cloud.mv3> + <div ##{tagCloudHeaderEl} .tag_cloud_header.mb2> + $if isTagCloudModeRelated + <button type=button .pa1.f7.link.thm-hover-link-color.mr1 :tagCloudActiveRelated:.b title=#{t "tagCloud.topTagsTitle"} data-tcm-action=related>#{t "tagCloud.relatedTags"} + $forall (n, titleKey) <- tagCloudCounts + $if n /= 1 + \ ‧ + <button type=button .pa1.f7.link.thm-hover-link-color :n == 1:.ml2 :tagCloudActiveRelatedLowerBound == Just n:.b title=#{t titleKey} data-tcm-action=relatedLowerBound data-tcm-lb=#{n}> + $if n == 1 + #{t "filter.all"} + $else + #{n} + $else + <button type=button .pa1.f7.link.thm-hover-link-color.mr1 :tagCloudActiveTop:.b title=#{t "tagCloud.topTagsTitle"} data-tcm-action=top>#{t "tagCloud.topTags"} + $forall (n, titleKey) <- tagCloudCounts + $if n /= 1 + \ ‧ + <button type=button .pa1.f7.link.thm-hover-link-color :n == 1:.ml2 :tagCloudActiveLowerBound == Just n:.b title=#{t titleKey} data-tcm-action=lowerBound data-tcm-value=#{n}> + $if n == 1 + #{t "filter.all"} + $else + #{n} + <button type=button .pa1.ml2.f7.link.thm-text-faded.thm-hover-link-color data-tcm-action=toggleExpand data-show-label=#{t "tagCloud.show"} data-hide-label=#{t "tagCloud.hide"}> + $if tagCloudExpanded + #{t "tagCloud.hide"} + $else + #{t "tagCloud.show"} + <div ##{tagCloudBodyEl} .tag_cloud_body> <div ##{renderEl} .mt3> @@ -71,9 +116,9 @@ $if (fromIntegral bcount >= limit) || (page > 1) <div .dib.ml5> <span .silver.mr1>#{t "pagination.perPage"} - <a .link.pager-link :limit == 20:.nav-active href="@?{(route, catMaybes [Just ("count", "20"), mqueryp])}"‧>20</a> ‧ - <a .link.pager-link :limit == 40:.nav-active href="@?{(route, catMaybes [Just ("count", "40"), mqueryp])}"‧>40</a> ‧ - <a .link.pager-link :limit == 80:.nav-active href="@?{(route, catMaybes [Just ("count", "80"), mqueryp])}"‧>80</a> ‧ - <a .link.pager-link :limit == 120:.nav-active href="@?{(route, catMaybes [Just ("count", "120"), mqueryp])}"‧>120</a> ‧ - <a .link.pager-link :limit == 160:.nav-active href="@?{(route, catMaybes [Just ("count", "160"), mqueryp])}"‧>160</a> + <a .link.pager-link :limit == 20:.nav-active href="@?{(route, catMaybes [Just ("count", "20"), mqueryp, msortp, morderp])}"‧>20</a> ‧ + <a .link.pager-link :limit == 40:.nav-active href="@?{(route, catMaybes [Just ("count", "40"), mqueryp, msortp, morderp])}"‧>40</a> ‧ + <a .link.pager-link :limit == 80:.nav-active href="@?{(route, catMaybes [Just ("count", "80"), mqueryp, msortp, morderp])}"‧>80</a> ‧ + <a .link.pager-link :limit == 120:.nav-active href="@?{(route, catMaybes [Just ("count", "120"), mqueryp, msortp, morderp])}"‧>120</a> ‧ + <a .link.pager-link :limit == 160:.nav-active href="@?{(route, catMaybes [Just ("count", "160"), mqueryp, msortp, morderp])}"‧>160</a>
+ test/JsonWireFormatSpec.hs view
@@ -0,0 +1,182 @@+{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE NoImplicitPrelude #-} + +-- | Pins the exact JSON wire format sent to / read from +-- frontend/src/types.ts. +module JsonWireFormatSpec (spec) where + +import Data.Aeson qualified as A +import Database.Persist.Sql (toSqlKey) +import Handler.Notes (NoteForm (..)) +import Model.Custom (BmSlug (..), NtSlug (..), PasswordHash (..)) +import Model.Form +import TestImport +import Yesod.Form.Fields (Textarea (..)) + +t0 :: UTCTime +t0 = UTCTime (fromGregorian 2024 1 1) 0 + +t1 :: UTCTime +t1 = UTCTime (fromGregorian 2024 1 2) 0 + +shouldEncodeTo :: (A.ToJSON a) => a -> ByteString -> Expectation +shouldEncodeTo actual expectedJson = + A.toJSON actual `shouldBe` fromMaybe (error "invalid expected JSON") (A.decodeStrict' expectedJson) + +shouldDecodeTo :: (A.FromJSON a, Eq a, Show a) => ByteString -> a -> Expectation +shouldDecodeTo json expected = A.decodeStrict' json `shouldBe` Just expected + +spec :: Spec +spec = describe "JSON wire format" $ do + describe "BookmarkForm (app.dat.bmark / app.dat.bmarks)" $ do + it "encodes every field, including archive fields, for an owned bookmark" + $ bookmarkFormFixture + `shouldEncodeTo` "{\"url\":\"https://example.com\",\"title\":\"Example\",\"description\":\"An extended description\",\"tags\":\"foo bar\",\"private\":false,\"toread\":true,\"bid\":1,\"slug\":\"abc123\",\"selected\":true,\"time\":\"2024-01-01T00:00:00Z\",\"archiveUrl\":\"https://archive.example.com/x\",\"archiveRequested\":true}" + + it "encodes unset optional fields as null, and omits archive fields entirely when absent" + $ mkNewBookmarkForm False testUser "https://x.com" Nothing Nothing Nothing Nothing Nothing + `shouldEncodeTo` "{\"url\":\"https://x.com\",\"title\":null,\"description\":null,\"tags\":null,\"private\":null,\"toread\":null,\"bid\":null,\"slug\":null,\"selected\":null,\"time\":null}" + + it "decodes a frontend-submitted bookmark form" + $ "{\"url\":\"https://example.com\",\"title\":\"Example\",\"description\":\"An extended description\",\"tags\":\"foo bar\",\"private\":false,\"toread\":true,\"bid\":1,\"slug\":\"abc123\",\"selected\":true,\"time\":\"2024-01-01T00:00:00Z\",\"archiveUrl\":\"https://archive.example.com/x\",\"archiveRequested\":true}" + `shouldDecodeTo` bookmarkFormFixture + + describe "Entity Note (app.dat.note / app.dat.notes)" + $ it "encodes id, userId, and every Note field" + $ noteFixture + `shouldEncodeTo` "{\"id\":42,\"userId\":7,\"slug\":\"abcdefghij\",\"length\":4,\"title\":\"Title\",\"text\":\"Body text\",\"isMarkdown\":true,\"shared\":false,\"created\":\"2024-01-01T00:00:00Z\",\"updated\":\"2024-01-02T00:00:00Z\"}" + + describe "NoteForm (postAddNoteR request body)" + $ it "decodes a frontend-submitted note form" + $ "{\"id\":42,\"slug\":\"abcdefghij\",\"title\":\"Title\",\"text\":\"Body text\",\"isMarkdown\":true,\"shared\":false,\"created\":\"2024-01-01T00:00:00Z\",\"updated\":\"2024-01-02T00:00:00Z\"}" + `shouldDecodeTo` NoteForm + { _id = Just 42, + _slug = Just (NtSlug "abcdefghij"), + _title = Just "Title", + _text = Just (Textarea "Body text"), + _isMarkdown = Just True, + _shared = Just False, + _created = Just (UTCTimeStr t0), + _updated = Just (UTCTimeStr t1) + } + + describe "AccountSettingsForm (app.dat.accountSettings)" + $ it "strips the leading underscore from every field name" + $ AccountSettingsForm + { _privateDefault = True, + _archiveDefault = False, + _suggestTags = True, + _suggestTagsUseReturnKey = False, + _privacyLock = False, + _publicTagCloud = True, + _previewNotes = True, + _archiveBackendEnabled = False, + _hasApiKey = True, + _language = Just I18nLangDe + } + `shouldEncodeTo` "{\"privateDefault\":true,\"archiveDefault\":false,\"suggestTags\":true,\"suggestTagsUseReturnKey\":false,\"privacyLock\":false,\"publicTagCloud\":true,\"previewNotes\":true,\"archiveBackendEnabled\":false,\"hasApiKey\":true,\"language\":\"de\"}" + + describe "SharedP (app.dat.sharedp)" + $ it "encodes as bare lowercase strings" + $ do + SharedAll `shouldEncodeTo` "\"all\"" + SharedPublic `shouldEncodeTo` "\"public\"" + SharedPrivate `shouldEncodeTo` "\"private\"" + + describe "FilterP (app.dat.filter)" + $ it "encodes as a {tag, contents} discriminated union" + $ do + FilterAll `shouldEncodeTo` "{\"tag\":\"FilterAll\"}" + FilterSingle (BmSlug "abc123") `shouldEncodeTo` "{\"tag\":\"FilterSingle\",\"contents\":\"abc123\"}" + + describe "TagCloudMode (app.tagCloudMode)" + $ it "encodes each variant's mode/value/expanded/lowerBound shape" + $ do + TagCloudModeTop True `shouldEncodeTo` "{\"mode\":\"top\",\"expanded\":true}" + TagCloudModeTopLowerBound False 20 `shouldEncodeTo` "{\"mode\":\"lowerBound\",\"value\":20,\"expanded\":false}" + TagCloudModeRelated True ["foo", "bar"] `shouldEncodeTo` "{\"mode\":\"related\",\"value\":\"foo bar\",\"expanded\":true}" + TagCloudModeRelatedLowerBound False ["foo"] 5 `shouldEncodeTo` "{\"mode\":\"relatedLowerBound\",\"value\":\"foo\",\"lowerBound\":5,\"expanded\":false}" + TagCloudModeNone `shouldEncodeTo` "{\"mode\":\"none\",\"value\":null,\"expanded\":false}" + + describe "TagSuggestionRequest / TagSuggestionResponse (api/tagSuggestions)" $ do + it "decodes a frontend-submitted request" + $ "{\"query\":\"fo\",\"currentTags\":[\"bar\"]}" + `shouldDecodeTo` TagSuggestionRequest {_query = "fo", _currentTags = Just ["bar"]} + + it "encodes the suggestion list" + $ TagSuggestionResponse {_suggestions = [Suggestion "foo" 3, Suggestion "food" 1]} + `shouldEncodeTo` "{\"suggestions\":[{\"term\":\"foo\",\"count\":3},{\"term\":\"food\",\"count\":1}]}" + + describe "BulkEditForm (api/bm/bulkEdit request body)" $ do + it "decodes a page selection" + $ "{\"selection\":\"page\",\"bids\":[1,2,3],\"action\":\"star\",\"addTags\":\"foo\",\"removeTags\":\"bar\",\"selectionCount\":3}" + `shouldDecodeTo` BulkEditForm + { _beSelection = BulkSelectionPage [1, 2, 3], + _beAction = Just BulkActionStar, + _beAddTags = "foo", + _beRemoveTags = "bar", + _beSelectionCount = 3 + } + + it "decodes an all-matching-query selection" + $ "{\"selection\":\"all\",\"filter\":{\"tag\":\"FilterAll\"},\"sharedp\":\"all\",\"tags\":[\"x\"],\"query\":\"q\",\"action\":null,\"addTags\":\"\",\"removeTags\":\"\",\"selectionCount\":10}" + `shouldDecodeTo` BulkEditForm + { _beSelection = BulkSelectionAll FilterAll SharedAll ["x"] (Just "q"), + _beAction = Nothing, + _beAddTags = "", + _beRemoveTags = "", + _beSelectionCount = 10 + } + + describe "NoteBulkEditForm (api/note/bulkEdit request body)" $ do + it "decodes a page selection" + $ "{\"selection\":\"page\",\"nids\":[5,6],\"action\":\"markdown\",\"selectionCount\":2}" + `shouldDecodeTo` NoteBulkEditForm + { _nbeSelection = NoteBulkSelectionPage [5, 6], + _nbeAction = NoteBulkActionMarkdown, + _nbeSelectionCount = 2 + } + + it "decodes an all-matching-query selection" + $ "{\"selection\":\"all\",\"sharedp\":\"public\",\"query\":null,\"action\":\"delete\",\"selectionCount\":4}" + `shouldDecodeTo` NoteBulkEditForm + { _nbeSelection = NoteBulkSelectionAll SharedPublic Nothing, + _nbeAction = NoteBulkActionDelete, + _nbeSelectionCount = 4 + } + +bookmarkFormFixture :: BookmarkForm +bookmarkFormFixture = + BookmarkForm + { _url = "https://example.com", + _title = Just "Example", + _description = Just (Textarea "An extended description"), + _tags = Just "foo bar", + _private = Just False, + _toread = Just True, + _bid = Just 1, + _slug = Just (BmSlug "abc123"), + _selected = Just True, + _time = Just (UTCTimeStr t0), + _archiveUrl = Just "https://archive.example.com/x", + _archiveRequested = Just True + } + +noteFixture :: Entity Note +noteFixture = + Entity + (toSqlKey 42) + Note + { noteUserId = toSqlKey 7, + noteSlug = NtSlug "abcdefghij", + noteLength = 4, + noteTitle = "Title", + noteText = "Body text", + noteIsMarkdown = True, + noteShared = False, + noteCreated = t0, + noteUpdated = t1 + } + +testUser :: User +testUser = User "u" (PasswordHash "h") Nothing False False True True False False True Nothing
+ test/Model/BookmarksBulkUpsertSpec.hs view
@@ -0,0 +1,208 @@+{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE NoImplicitPrelude #-} + +module Model.BookmarksBulkUpsertSpec (spec) where + +import Database.Persist.Sql (toSqlKey) +import Model.Custom (hashPasswordBCryptWithPolicy, mkBmSlug) +import TestImport +import Types (DB) + +t0 :: UTCTime +t0 = UTCTime (fromGregorian 2024 1 1) 0 + +createTestUser :: Text -> DB (Key User) +createTestUser name = do + pwHash <- liftIO $ hashPasswordBCryptWithPolicy bcryptTestPolicy "pass" + insert $ User name pwHash Nothing False False True True False False True Nothing + +createBm :: Key User -> Text -> Maybe Text -> DB (Key Bookmark) +createBm uid href marchive = do + slug <- liftIO mkBmSlug + insert $ Bookmark uid slug href "desc" "ext" t0 False False False marchive + +mkNewBm :: Key User -> Text -> DB Bookmark +mkNewBm uid href = do + slug <- liftIO mkBmSlug + pure $ Bookmark uid slug href "new desc" "new ext" t0 False False False Nothing + +getBookmark :: Key Bookmark -> DB (Maybe Bookmark) +getBookmark bid = fmap entityVal <$> selectFirst [BookmarkId ==. bid] [] + +getBookmarkTags :: Key Bookmark -> DB [Text] +getBookmarkTags bid = do + tags <- selectList [BookmarkTagBookmarkId ==. bid] [Asc BookmarkTagSeq] + return $ map (bookmarkTagTag . entityVal) tags + +isCreated :: UpsertResult a -> Bool +isCreated (Created _) = True +isCreated _ = False + +spec :: Spec +spec = withApp $ do + describe "upsertBookmarks" $ do + it "inserts new bookmarks and creates their tags" $ do + (uid, bm1, bm2) <- runDB $ do + uid <- createTestUser "testuser" + bm1 <- mkNewBm uid "https://a.com" + bm2 <- mkNewBm uid "https://b.com" + return (uid, bm1, bm2) + results <- runDB $ upsertBookmarks uid [Nothing, Nothing] [bm1, bm2] [["tag1"], ["tag2", "tag3"]] + liftIO $ map isCreated results `shouldBe` [True, True] + case [bid | Created bid <- results] of + [bid1, bid2] -> do + tags1 <- runDB $ getBookmarkTags bid1 + tags2 <- runDB $ getBookmarkTags bid2 + liftIO $ tags1 `shouldBe` ["tag1"] + liftIO $ tags2 `shouldBe` ["tag2", "tag3"] + other -> liftIO $ expectationFailure ("unexpected results: " <> show other) + + it "updates an existing bookmark found by explicit id and preserves its slug" $ do + (uid, bid, prevSlug, bm') <- runDB $ do + uid <- createTestUser "testuser" + bid <- createBm uid "https://a.com" Nothing + Just prev <- getBookmark bid + bm' <- mkNewBm uid "https://a.com" + return (uid, bid, bookmarkSlug prev, bm') + results <- runDB $ upsertBookmarks uid [Just bid] [bm'] [["newtag"]] + liftIO $ results `shouldBe` [Updated bid] + mUpdated <- runDB $ getBookmark bid + liftIO $ fmap bookmarkSlug mUpdated `shouldBe` Just prevSlug + liftIO $ fmap bookmarkDescription mUpdated `shouldBe` Just "new desc" + tags <- runDB $ getBookmarkTags bid + liftIO $ tags `shouldBe` ["newtag"] + + it "updates an existing bookmark found by href when no id is given" $ do + (uid, bid, bm') <- runDB $ do + uid <- createTestUser "testuser" + bid <- createBm uid "https://a.com" Nothing + bm' <- mkNewBm uid "https://a.com" + return (uid, bid, bm') + results <- runDB $ upsertBookmarks uid [Nothing] [bm'] [["newtag"]] + liftIO $ results `shouldBe` [Updated bid] + mUpdated <- runDB $ getBookmark bid + liftIO $ fmap bookmarkDescription mUpdated `shouldBe` Just "new desc" + + it "preserves archiveHref when href is unchanged, clears it when href changes" $ do + (uid, bidSame, bidChanged, bmSame, bmChanged) <- runDB $ do + uid <- createTestUser "testuser" + bidSame <- createBm uid "https://same.com" (Just "https://archive.org/same") + bidChanged <- createBm uid "https://old.com" (Just "https://archive.org/old") + bmSame <- mkNewBm uid "https://same.com" + bmChanged <- mkNewBm uid "https://new.com" + return (uid, bidSame, bidChanged, bmSame, bmChanged) + _ <- runDB $ upsertBookmarks uid [Just bidSame, Just bidChanged] [bmSame, bmChanged] [[], []] + mSame <- runDB $ getBookmark bidSame + mChanged <- runDB $ getBookmark bidChanged + liftIO $ (mSame >>= bookmarkArchiveHref) `shouldBe` Just "https://archive.org/same" + liftIO $ (mChanged >>= bookmarkArchiveHref) `shouldBe` Nothing + + it "replaces existing tags on update rather than merging" $ do + (uid, bid, bm') <- runDB $ do + uid <- createTestUser "testuser" + bid <- createBm uid "https://a.com" Nothing + insert_ $ BookmarkTag uid "oldtag" bid 1 + bm' <- mkNewBm uid "https://a.com" + return (uid, bid, bm') + _ <- runDB $ upsertBookmarks uid [Just bid] [bm'] [["newtag"]] + tags <- runDB $ getBookmarkTags bid + liftIO $ tags `shouldBe` ["newtag"] + + it "returns Failed \"not found\" for an explicit id that does not exist" $ do + (uid, bm') <- runDB $ do + uid <- createTestUser "testuser" + bm' <- mkNewBm uid "https://a.com" + return (uid, bm') + let bogusBid = toSqlKey 999999 + results <- runDB $ upsertBookmarks uid [Just bogusBid] [bm'] [[]] + liftIO $ results `shouldBe` [Failed ReasonNotFound] + + it "returns Failed \"unauthorized\" for an explicit id owned by another user" $ do + (uid1, bid2, bm') <- runDB $ do + uid1 <- createTestUser "testuser" + uid2 <- createTestUser "otheruser" + bid2 <- createBm uid2 "https://other.com" Nothing + bm' <- mkNewBm uid1 "https://a.com" + return (uid1, bid2, bm') + results <- runDB $ upsertBookmarks uid1 [Just bid2] [bm'] [[]] + liftIO $ results `shouldBe` [Failed ReasonUnauthorized] + + it "returns Failed instead of crashing when an explicit id's new href collides with another existing bookmark" $ do + (uid, bidTarget, bidOther, bm') <- runDB $ do + uid <- createTestUser "testuser" + bidTarget <- createBm uid "https://target.com" Nothing + bidOther <- createBm uid "https://other.com" Nothing + bm' <- mkNewBm uid "https://other.com" + return (uid, bidTarget, bidOther, bm') + results <- runDB $ upsertBookmarks uid [Just bidTarget] [bm'] [[]] + liftIO $ results `shouldBe` [Failed ReasonHrefUsedByOther] + mTarget <- runDB $ getBookmark bidTarget + mOther <- runDB $ getBookmark bidOther + liftIO $ fmap bookmarkHref mTarget `shouldBe` Just "https://target.com" + liftIO $ fmap bookmarkHref mOther `shouldBe` Just "https://other.com" + + it "fails only the item whose userId does not match, leaving the rest of the batch unaffected" $ do + (uid1, bm1, bm2) <- runDB $ do + uid1 <- createTestUser "testuser" + uid2 <- createTestUser "otheruser" + bm1 <- mkNewBm uid1 "https://a.com" + bm2 <- mkNewBm uid2 "https://b.com" + return (uid1, bm1, bm2) + results <- runDB $ upsertBookmarks uid1 [Nothing, Nothing] [bm1, bm2] [[], []] + case results of + [Created _, Failed ReasonUnauthorized] -> pure () + other -> liftIO $ expectationFailure ("unexpected results: " <> show other) + + it "collapses duplicate urls among new inserts into one row: first is Created, rest are Updated" $ do + (uid, bm1, bm2, bm3) <- runDB $ do + uid <- createTestUser "testuser" + bm1 <- mkNewBm uid "https://dup.com" + bm2 <- (\b -> b {bookmarkDescription = "second"}) <$> mkNewBm uid "https://dup.com" + bm3 <- (\b -> b {bookmarkDescription = "third"}) <$> mkNewBm uid "https://dup.com" + return (uid, bm1, bm2, bm3) + results <- + runDB $ + upsertBookmarks uid [Nothing, Nothing, Nothing] [bm1, bm2, bm3] [["a"], ["b"], ["c"]] + case results of + [Created bid1, Updated bid2, Updated bid3] -> do + liftIO $ [bid2, bid3] `shouldBe` [bid1, bid1] + mBm <- runDB $ getBookmark bid1 + liftIO $ fmap bookmarkDescription mBm `shouldBe` Just "third" + tags <- runDB $ getBookmarkTags bid1 + liftIO $ tags `shouldBe` ["c"] + other -> liftIO $ expectationFailure ("unexpected results: " <> show other) + + it "duplicate urls targeting an existing bookmark are all reported as updates" $ do + (uid, bid, bm1, bm2) <- runDB $ do + uid <- createTestUser "testuser" + bid <- createBm uid "https://existing.com" Nothing + bm1 <- mkNewBm uid "https://existing.com" + bm2 <- (\b -> b {bookmarkDescription = "second"}) <$> mkNewBm uid "https://existing.com" + return (uid, bid, bm1, bm2) + results <- runDB $ upsertBookmarks uid [Nothing, Nothing] [bm1, bm2] [["a"], ["b"]] + liftIO $ results `shouldBe` [Updated bid, Updated bid] + mBm <- runDB $ getBookmark bid + liftIO $ fmap bookmarkDescription mBm `shouldBe` Just "second" + tags <- runDB $ getBookmarkTags bid + liftIO $ tags `shouldBe` ["b"] + + it "processes a mixed batch of inserts, updates, and failures preserving input order" $ do + (uid, bidUpdate, bmInsert, bmUpdate, bmBogus) <- runDB $ do + uid <- createTestUser "testuser" + bidUpdate <- createBm uid "https://existing.com" Nothing + bmInsert <- mkNewBm uid "https://new.com" + bmUpdate <- mkNewBm uid "https://existing.com" + bmBogus <- mkNewBm uid "https://bogus.com" + return (uid, bidUpdate, bmInsert, bmUpdate, bmBogus) + let bogusBid = toSqlKey 999999 + results <- + runDB $ + upsertBookmarks + uid + [Nothing, Just bidUpdate, Just bogusBid] + [bmInsert, bmUpdate, bmBogus] + [["a"], ["b"], ["c"]] + case results of + [Created _, Updated updatedBid, Failed ReasonNotFound] -> + liftIO $ updatedBid `shouldBe` bidUpdate + other -> liftIO $ expectationFailure ("unexpected results: " <> show other)
test/Model/BookmarksPagingSpec.hs view
@@ -21,16 +21,27 @@ slug <- liftIO mkBmSlug insert $ Bookmark uid slug href "desc" "" t False False False Nothing -queryWithCursor :: Key User -> Maybe BookmarkPagingCursorTime -> DB [Key Bookmark] +queryDir :: SortDirection -> Key User -> Maybe BookmarkPagingCursor -> Limit -> DB ([Key Bookmark], Bool, Bool) +queryDir dir uid mcursor lim = do + (_, rows, hasEarlier, hasLater) <- bookmarksTagsQuery uid True SharedAll FilterAll [] Nothing (PageByCursor dir mcursor) lim + return (map (entityKey . fst) rows, hasEarlier, hasLater) + +queryWithCursor :: Key User -> Maybe BookmarkPagingCursor -> DB [Key Bookmark] queryWithCursor uid mcursor = do - (_, rows, _, _) <- bookmarksTagsQuery uid True SharedAll FilterAll [] Nothing mcursor 100 1 - return $ map (entityKey . fst) rows + (bids, _, _) <- queryDir SortDesc uid mcursor 100 + return bids -queryFlags :: Key User -> Maybe BookmarkPagingCursorTime -> Limit -> DB (Bool, Bool) +queryFlags :: Key User -> Maybe BookmarkPagingCursor -> Limit -> DB (Bool, Bool) queryFlags uid mcursor lim = do - (_, _, hasEarlier, hasLater) <- bookmarksTagsQuery uid True SharedAll FilterAll [] Nothing mcursor lim 1 + (_, hasEarlier, hasLater) <- queryDir SortDesc uid mcursor lim return (hasEarlier, hasLater) +beforeT :: UTCTime -> Maybe BookmarkPagingCursor +beforeT t = Just (PagingCursorBefore (BookmarkCursor t Nothing)) + +afterT :: UTCTime -> Maybe BookmarkPagingCursor +afterT t = Just (PagingCursorAfter (BookmarkCursor t Nothing)) + spec :: Spec spec = withApp $ do describe "bookmarksTagsQuery paging cursor" $ do @@ -43,7 +54,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" t0 return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore t0)) + bids <- runDB $ queryWithCursor uid (beforeT t0) liftIO $ bids `shouldNotContain` [bid] it "includes a bookmark strictly before the cursor time" $ do @@ -53,7 +64,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBefore return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore tCursor)) + bids <- runDB $ queryWithCursor uid (beforeT tCursor) liftIO $ bids `shouldContain` [bid] it "excludes a bookmark strictly after the cursor time" $ do @@ -62,7 +73,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tAfter return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore t0)) + bids <- runDB $ queryWithCursor uid (beforeT t0) liftIO $ bids `shouldNotContain` [bid] -- ─── PagingCursorAfter (gt) ──────────────────────────────────────────── @@ -73,7 +84,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" t0 return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter t0)) + bids <- runDB $ queryWithCursor uid (afterT t0) liftIO $ bids `shouldNotContain` [bid] it "includes a bookmark strictly after the cursor time" $ do @@ -82,7 +93,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tAfter return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter t0)) + bids <- runDB $ queryWithCursor uid (afterT t0) liftIO $ bids `shouldContain` [bid] it "excludes a bookmark strictly before the cursor time" $ do @@ -92,7 +103,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBefore return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter tCursor)) + bids <- runDB $ queryWithCursor uid (afterT tCursor) liftIO $ bids `shouldNotContain` [bid] -- ─── Fractional second cursor vs whole-second bookmark ───────────────── @@ -106,7 +117,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore tCursor)) + bids <- runDB $ queryWithCursor uid (beforeT tCursor) liftIO $ bids `shouldContain` [bid] it "PagingCursorBefore: excludes bookmark at whole second above a fractional cursor" $ do @@ -117,7 +128,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore tCursor)) + bids <- runDB $ queryWithCursor uid (beforeT tCursor) liftIO $ bids `shouldNotContain` [bid] it "PagingCursorAfter: includes bookmark at whole second above a fractional cursor" $ do @@ -128,7 +139,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter tCursor)) + bids <- runDB $ queryWithCursor uid (afterT tCursor) liftIO $ bids `shouldContain` [bid] it "PagingCursorAfter: excludes bookmark at whole second below a fractional cursor" $ do @@ -139,7 +150,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter tCursor)) + bids <- runDB $ queryWithCursor uid (afterT tCursor) liftIO $ bids `shouldNotContain` [bid] -- ─── Whole-second cursor vs fractional-second bookmark ───────────────── @@ -153,7 +164,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore tCursor)) + bids <- runDB $ queryWithCursor uid (beforeT tCursor) liftIO $ bids `shouldNotContain` [bid] it "PagingCursorBefore: includes bookmark at fractional second just before a whole-second cursor" $ do @@ -164,7 +175,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore tCursor)) + bids <- runDB $ queryWithCursor uid (beforeT tCursor) liftIO $ bids `shouldContain` [bid] it "PagingCursorBefore: excludes bookmark at fractional second just after a whole-second cursor" $ do @@ -175,7 +186,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore tCursor)) + bids <- runDB $ queryWithCursor uid (beforeT tCursor) liftIO $ bids `shouldNotContain` [bid] it "PagingCursorAfter: excludes fractional-second bookmark at the cursor time" $ do @@ -185,7 +196,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter tCursor)) + bids <- runDB $ queryWithCursor uid (afterT tCursor) liftIO $ bids `shouldNotContain` [bid] it "PagingCursorAfter: includes bookmark at fractional second just after a whole-second cursor" $ do @@ -196,7 +207,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter tCursor)) + bids <- runDB $ queryWithCursor uid (afterT tCursor) liftIO $ bids `shouldContain` [bid] it "PagingCursorAfter: excludes bookmark at fractional second just before a whole-second cursor" $ do @@ -207,7 +218,7 @@ uid <- createTestUser bid <- createBmAt uid "https://a.com" tBm return (uid, bid) - bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter tCursor)) + bids <- runDB $ queryWithCursor uid (afterT tCursor) liftIO $ bids `shouldNotContain` [bid] -- ─── hasEarlier / hasLater navigation flags ──────────────────────────── @@ -240,7 +251,7 @@ _ <- createBmAt uid "https://before.com" t0 return uid let tCursor = addUTCTime 10 t0 - (hasEarlier, hasLater) <- runDB $ queryFlags uid (Just (PagingCursorBefore tCursor)) 100 + (hasEarlier, hasLater) <- runDB $ queryFlags uid (beforeT tCursor) 100 liftIO $ hasEarlier `shouldBe` False liftIO $ hasLater `shouldBe` True @@ -253,7 +264,7 @@ return uid -- cursor is past all 3 bookmarks; fetch only 2 of the 3 let tCursor = addUTCTime 10 t0 - (hasEarlier, hasLater) <- runDB $ queryFlags uid (Just (PagingCursorBefore tCursor)) 2 + (hasEarlier, hasLater) <- runDB $ queryFlags uid (beforeT tCursor) 2 liftIO $ hasEarlier `shouldBe` True liftIO $ hasLater `shouldBe` True @@ -262,7 +273,7 @@ uid <- createTestUser _ <- createBmAt uid "https://after.com" (addUTCTime 10 t0) return uid - (hasEarlier, hasLater) <- runDB $ queryFlags uid (Just (PagingCursorAfter t0)) 100 + (hasEarlier, hasLater) <- runDB $ queryFlags uid (afterT t0) 100 liftIO $ hasEarlier `shouldBe` True liftIO $ hasLater `shouldBe` False @@ -274,6 +285,120 @@ [1 .. 3] return uid -- cursor is before all 3 bookmarks; fetch only 2 of the 3 - (hasEarlier, hasLater) <- runDB $ queryFlags uid (Just (PagingCursorAfter (addUTCTime (-1) t0))) 2 + (hasEarlier, hasLater) <- runDB $ queryFlags uid (afterT (addUTCTime (-1) t0)) 2 liftIO $ hasEarlier `shouldBe` True liftIO $ hasLater `shouldBe` True + + -- ─── Composite (time, id) keyset tie-breaking ────────────────────────── + + describe "composite (time, id) cursor tie-breaking" $ do + it "PagingCursorBefore keeps only same-time rows with a smaller id" $ do + (uid, b1, b2, _) <- runDB $ do + uid <- createTestUser + b1 <- createBmAt uid "https://1.com" t0 + b2 <- createBmAt uid "https://2.com" t0 + b3 <- createBmAt uid "https://3.com" t0 + return (uid, b1, b2, b3) + bids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore (BookmarkCursor t0 (Just b2)))) + liftIO $ bids `shouldBe` [b1] + + it "PagingCursorAfter keeps only same-time rows with a larger id" $ do + (uid, b2, b3) <- runDB $ do + uid <- createTestUser + _ <- createBmAt uid "https://1.com" t0 + b2 <- createBmAt uid "https://2.com" t0 + b3 <- createBmAt uid "https://3.com" t0 + return (uid, b2, b3) + bids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter (BookmarkCursor t0 (Just b2)))) + liftIO $ bids `shouldBe` [b3] + + it "a time-only cursor still uses the pure time boundary" $ do + (uid, bOld) <- runDB $ do + uid <- createTestUser + bOld <- createBmAt uid "https://old.com" (addUTCTime (-1) t0) + _ <- createBmAt uid "https://tied.com" t0 + return (uid, bOld) + bids <- runDB $ queryWithCursor uid (beforeT t0) + liftIO $ bids `shouldBe` [bOld] + + it "pages through rows sharing one timestamp without skips or repeats" $ do + (uid, allBids) <- runDB $ do + uid <- createTestUser + bids <- mapM (\n -> createBmAt uid ("https://" <> tshow (n :: Int) <> ".com") t0) [1 .. 5] + return (uid, bids) + -- newest-first display of same-time rows falls back to id desc + let walk acc mcursor = do + (bids, _, _) <- runDB $ queryDir SortDesc uid mcursor 2 + case lastMay bids of + Nothing -> pure acc + Just lastBid -> walk (acc <> bids) (Just (PagingCursorBefore (BookmarkCursor t0 (Just lastBid)))) + collected <- walk [] Nothing + liftIO $ collected `shouldBe` reverse allBids + + -- ─── Asc display direction (PageByCursor SortAsc) ────────────────────── + + describe "asc display direction (PageByCursor SortAsc)" $ do + it "no cursor returns oldest first with hasEarlier=False, hasLater=True when rows exceed the limit" $ do + (uid, b1, b2, _) <- runDB $ do + uid <- createTestUser + b1 <- createBmAt uid "https://1.com" (addUTCTime 1 t0) + b2 <- createBmAt uid "https://2.com" (addUTCTime 2 t0) + b3 <- createBmAt uid "https://3.com" (addUTCTime 3 t0) + return (uid, b1, b2, b3) + (bids, hasEarlier, hasLater) <- runDB $ queryDir SortAsc uid Nothing 2 + liftIO $ bids `shouldBe` [b1, b2] + liftIO $ hasEarlier `shouldBe` False + liftIO $ hasLater `shouldBe` True + + it "PagingCursorAfter returns the adjacent newer rows in ascending order" $ do + (uid, b2, b3, _) <- runDB $ do + uid <- createTestUser + _ <- createBmAt uid "https://1.com" (addUTCTime 1 t0) + b2 <- createBmAt uid "https://2.com" (addUTCTime 2 t0) + b3 <- createBmAt uid "https://3.com" (addUTCTime 3 t0) + b4 <- createBmAt uid "https://4.com" (addUTCTime 4 t0) + return (uid, b2, b3, b4) + (bids, hasEarlier, hasLater) <- runDB $ queryDir SortAsc uid (afterT (addUTCTime 1 t0)) 2 + liftIO $ bids `shouldBe` [b2, b3] + liftIO $ hasEarlier `shouldBe` True + liftIO $ hasLater `shouldBe` True + + it "PagingCursorBefore returns the adjacent older rows in ascending order" $ do + -- three rows below the cursor with limit 2: the scan must take the + -- two adjacent to the cursor (b2, b3), displayed ascending + (uid, b2, b3) <- runDB $ do + uid <- createTestUser + _ <- createBmAt uid "https://1.com" (addUTCTime 1 t0) + b2 <- createBmAt uid "https://2.com" (addUTCTime 2 t0) + b3 <- createBmAt uid "https://3.com" (addUTCTime 3 t0) + _ <- createBmAt uid "https://4.com" (addUTCTime 4 t0) + return (uid, b2, b3) + (bids, hasEarlier, hasLater) <- runDB $ queryDir SortAsc uid (beforeT (addUTCTime 4 t0)) 2 + liftIO $ bids `shouldBe` [b2, b3] + liftIO $ hasEarlier `shouldBe` True + liftIO $ hasLater `shouldBe` True + + it "PagingCursorBefore with all older rows fitting: hasEarlier=False, hasLater=True" $ do + (uid, b1) <- runDB $ do + uid <- createTestUser + b1 <- createBmAt uid "https://1.com" (addUTCTime 1 t0) + _ <- createBmAt uid "https://2.com" (addUTCTime 2 t0) + return (uid, b1) + (bids, hasEarlier, hasLater) <- runDB $ queryDir SortAsc uid (beforeT (addUTCTime 2 t0)) 100 + liftIO $ bids `shouldBe` [b1] + liftIO $ hasEarlier `shouldBe` False + liftIO $ hasLater `shouldBe` True + + it "pages forward through rows sharing one timestamp without skips or repeats" $ do + (uid, allBids) <- runDB $ do + uid <- createTestUser + bids <- mapM (\n -> createBmAt uid ("https://" <> tshow (n :: Int) <> ".com") t0) [1 .. 5] + return (uid, bids) + -- oldest-first display of same-time rows falls back to id asc + let walk acc mcursor = do + (bids, _, _) <- runDB $ queryDir SortAsc uid mcursor 2 + case lastMay bids of + Nothing -> pure acc + Just lastBid -> walk (acc <> bids) (Just (PagingCursorAfter (BookmarkCursor t0 (Just lastBid)))) + collected <- walk [] Nothing + liftIO $ collected `shouldBe` allBids
test/Model/BookmarksQuerySpec.hs view
@@ -30,7 +30,7 @@ queryBids :: Key User -> [Text] -> Maybe Text -> Bool -> DB [Key Bookmark] queryBids uid tags mq isowner = do - (_, rows, _, _) <- bookmarksTagsQuery uid isowner SharedAll FilterAll tags mq Nothing 100 1 + (_, rows, _, _) <- bookmarksTagsQuery uid isowner SharedAll FilterAll tags mq (PageByCursor SortDesc Nothing) 100 return $ map (entityKey . fst) rows spec :: Spec @@ -67,7 +67,7 @@ tagBm uid bid ".secret" 1 tagBm uid bid "public" 2 return (uid, bid) - (_, rows, _, _) <- runDB $ bookmarksTagsQuery uid False SharedAll FilterAll [] Nothing Nothing 100 1 + (_, rows, _, _) <- runDB $ bookmarksTagsQuery uid False SharedAll FilterAll [] Nothing (PageByCursor SortDesc Nothing) 100 let mTagStr = snd =<< listToMaybe rows liftIO $ mTagStr `shouldBe` Just "public"
test/Model/BookmarksSearchSpec.hs view
@@ -9,6 +9,8 @@ -- BookmarkExtended notes description:/d: -- BookmarkTag tags tags:/t: -- BookmarkTime time after:/a: before:/b: +-- +-- field: is a contains search; field= (url/title/description/tags) matches the entire field. module Model.BookmarksSearchSpec (spec) where @@ -37,7 +39,7 @@ search :: Key User -> Text -> DB [Key Bookmark] search uid q = do - (_, rows, _, _) <- bookmarksTagsQuery uid True SharedAll FilterAll [] (Just q) Nothing 100 1 + (_, rows, _, _) <- bookmarksTagsQuery uid True SharedAll FilterAll [] (Just q) (PageByCursor SortDesc Nothing) 100 return $ map (entityKey . fst) rows -- ─── Spec ────────────────────────────────────────────────────────────────── @@ -199,6 +201,73 @@ bids <- runDB $ search uid "t:haskell" liftIO $ bids `shouldContain` [bid] + -- ─── field= exact search ───────────────────────────────────────────────── + + describe "field= exact search" $ do + it "title= matches when the entire title equals the term" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "haskell" "" t2019 + return (uid, bid) + bids <- runDB $ search uid "title=haskell" + liftIO $ bids `shouldContain` [bid] + + it "title= does not match when the title merely contains the term" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "haskell tutorial" "" t2019 + return (uid, bid) + bids <- runDB $ search uid "title=haskell" + liftIO $ bids `shouldNotContain` [bid] + + it "title= is case-insensitive" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "haskell" "" t2019 + return (uid, bid) + bids <- runDB $ search uid "title=HASKELL" + liftIO $ bids `shouldContain` [bid] + + it "title= accepts a quoted phrase" $ do + (uid, bidExact, bidLonger) <- runDB $ do + uid <- createTestUser + bidExact <- createBm uid "https://a.com" "hacker news" "" t2019 + bidLonger <- createBm uid "https://b.com" "hacker newsletter" "" t2019 + return (uid, bidExact, bidLonger) + bids <- runDB $ search uid "title=\"hacker news\"" + liftIO $ bids `shouldContain` [bidExact] + liftIO $ bids `shouldNotContain` [bidLonger] + + it "tags= matches only the whole tag" $ do + (uid, bidWhole, bidPartial) <- runDB $ do + uid <- createTestUser + bidWhole <- createBm uid "https://a.com" "" "" t2019 + tagBm uid bidWhole "linux" 1 + bidPartial <- createBm uid "https://b.com" "" "" t2019 + tagBm uid bidPartial "linuxkernel" 1 + return (uid, bidWhole, bidPartial) + bids <- runDB $ search uid "tags=linux" + liftIO $ bids `shouldContain` [bidWhole] + liftIO $ bids `shouldNotContain` [bidPartial] + + it "u= is an alias for url=" $ do + (uid, bidExact, bidPartial) <- runDB $ do + uid <- createTestUser + bidExact <- createBm uid "https://a.com" "" "" t2019 + bidPartial <- createBm uid "https://a.com/page" "" "" t2019 + return (uid, bidExact, bidPartial) + bids <- runDB $ search uid "u=\"https://a.com\"" + liftIO $ bids `shouldContain` [bidExact] + liftIO $ bids `shouldNotContain` [bidPartial] + + it "field: still performs a contains search" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "haskell tutorial" "" t2019 + return (uid, bid) + bids <- runDB $ search uid "title:haskell" + liftIO $ bids `shouldContain` [bid] + -- ─── after: / a: date filter ───────────────────────────────────────────── describe "after: date filter" $ do @@ -398,6 +467,91 @@ return (uid, bid) bids <- runDB $ search uid "\"tallest building\"" liftIO $ bids `shouldNotContain` [bid] + + -- ─── Parentheses grouping ──────────────────────────────────────────────── + + describe "parentheses grouping" $ do + it "a|(b c) matches a bookmark containing only the first alternative" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "apple pie" "" t2019 + return (uid, bid) + bids <- runDB $ search uid "apple|(banana cherry)" + liftIO $ bids `shouldContain` [bid] + + it "a|(b c) matches a bookmark containing both grouped terms" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "banana cherry smoothie" "" t2019 + return (uid, bid) + bids <- runDB $ search uid "apple|(banana cherry)" + liftIO $ bids `shouldContain` [bid] + + it "a|(b c) does not match a bookmark containing only one grouped term" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "banana bread" "" t2019 + return (uid, bid) + bids <- runDB $ search uid "apple|(banana cherry)" + liftIO $ bids `shouldNotContain` [bid] + + it "-(a b) excludes a bookmark containing both terms" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "" "" t2019 + tagBm uid bid "surveys" 1 + tagBm uid bid "news" 2 + return (uid, bid) + bids <- runDB $ search uid "-(t:surveys t:news)" + liftIO $ bids `shouldNotContain` [bid] + + it "-(a b) includes a bookmark containing only one of the terms" $ do + (uid, bid) <- runDB $ do + uid <- createTestUser + bid <- createBm uid "https://a.com" "" "" t2019 + tagBm uid bid "surveys" 1 + return (uid, bid) + bids <- runDB $ search uid "-(t:surveys t:news)" + liftIO $ bids `shouldContain` [bid] + + it "supports nested groups" $ do + (uid, bMatch, bNoMatch) <- runDB $ do + uid <- createTestUser + bMatch <- createBm uid "https://a.com" "alpha beta" "" t2019 + bNoMatch <- createBm uid "https://b.com" "alpha delta" "" t2019 + return (uid, bMatch, bNoMatch) + bids <- runDB $ search uid "(alpha (beta|gamma))" + liftIO $ bids `shouldContain` [bMatch] + liftIO $ bids `shouldNotContain` [bNoMatch] + + it "groups combine with field prefixes, OR, NOT, and date filters" $ do + let t2018 = UTCTime (fromGregorian 2018 1 1) 0 + q = "(t:haskell t:youtube)|-(t:haskell t:vimeo) -(t:surveys t:news) a:2018-12-31" + (uid, bHsYt, bHsVimeo, bSurveysNews, bOther, bOld) <- runDB $ do + uid <- createTestUser + bHsYt <- createBm uid "https://a.com" "" "" t2019 + tagBm uid bHsYt "haskell" 1 + tagBm uid bHsYt "youtube" 2 + bHsVimeo <- createBm uid "https://b.com" "" "" t2019 + tagBm uid bHsVimeo "haskell" 1 + tagBm uid bHsVimeo "vimeo" 2 + bSurveysNews <- createBm uid "https://c.com" "" "" t2019 + tagBm uid bSurveysNews "haskell" 1 + tagBm uid bSurveysNews "youtube" 2 + tagBm uid bSurveysNews "surveys" 3 + tagBm uid bSurveysNews "news" 4 + bOther <- createBm uid "https://d.com" "" "" t2019 + tagBm uid bOther "cooking" 1 + bOld <- createBm uid "https://e.com" "" "" t2018 + tagBm uid bOld "haskell" 1 + tagBm uid bOld "youtube" 2 + return (uid, bHsYt, bHsVimeo, bSurveysNews, bOther, bOld) + bids <- runDB $ search uid q + liftIO $ bids `shouldContain` [bHsYt] + liftIO $ bids `shouldNotContain` [bHsVimeo] + liftIO $ bids `shouldNotContain` [bSurveysNews] + liftIO $ bids `shouldContain` [bOther] + liftIO $ bids `shouldNotContain` [bOld] -- ─── Complex combined queries ─────────────────────────────────────────────
+ test/Model/BookmarksSortSpec.hs view
@@ -0,0 +1,247 @@+{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE NoImplicitPrelude #-} + +module Model.BookmarksSortSpec (spec) where + +import Data.Time (addUTCTime) +import Model.Custom (hashPasswordBCryptWithPolicy, mkBmSlug) +import TestImport +import Types (DB) + +t0 :: UTCTime +t0 = UTCTime (fromGregorian 2024 1 1) 0 + +createTestUser :: DB (Key User) +createTestUser = do + pwHash <- liftIO $ hashPasswordBCryptWithPolicy bcryptTestPolicy "pass" + insert $ User "testuser" pwHash Nothing False False True True False False True Nothing + +createBmAt :: Key User -> Text -> Text -> UTCTime -> DB (Key Bookmark) +createBmAt uid href title t = do + slug <- liftIO mkBmSlug + insert $ Bookmark uid slug href title "" t False False False Nothing + +tagBm :: Key User -> Key Bookmark -> Text -> Int -> DB () +tagBm uid bid tag seq' = insert_ $ BookmarkTag uid tag bid seq' + +queryOrder :: Key User -> Bool -> BookmarkSort -> DB [Key Bookmark] +queryOrder uid isowner bsort = do + (_, rows, _, _) <- bookmarksTagsQuery uid isowner SharedAll FilterAll [] Nothing (mkBookmarkPaging bsort Nothing 1) 100 + return $ map (entityKey . fst) rows + +queryPageFlags :: Key User -> BookmarkSort -> Limit -> Page -> DB (Bool, Bool) +queryPageFlags uid bsort lim pg = do + (_, _, hasEarlier, hasLater) <- bookmarksTagsQuery uid True SharedAll FilterAll [] Nothing (mkBookmarkPaging bsort Nothing pg) lim + return (hasEarlier, hasLater) + +spec :: Spec +spec = withApp $ do + describe "bookmarksTagsQuery sort" $ do + -- ─── BookmarkSortTime ──────────────────────────────────────────────── + + describe "BookmarkSortTime" $ do + it "SortAsc orders oldest first" $ do + (uid, bOld, bNew) <- runDB $ do + uid <- createTestUser + bNew <- createBmAt uid "https://new.com" "new" (addUTCTime 100 t0) + bOld <- createBmAt uid "https://old.com" "old" t0 + return (uid, bOld, bNew) + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortTime SortAsc) + liftIO $ bids `shouldBe` [bOld, bNew] + + it "SortDesc orders newest first" $ do + (uid, bOld, bNew) <- runDB $ do + uid <- createTestUser + bNew <- createBmAt uid "https://new.com" "new" (addUTCTime 100 t0) + bOld <- createBmAt uid "https://old.com" "old" t0 + return (uid, bOld, bNew) + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortTime SortDesc) + liftIO $ bids `shouldBe` [bNew, bOld] + + -- ─── BookmarkSortTitle ─────────────────────────────────────────────── + + describe "BookmarkSortTitle" $ do + it "SortAsc orders case-insensitively" $ do + -- byte/ASCII ordering would put "Zebra" ('Z'=90) before "apple" + -- ('a'=97); a correct case-insensitive sort must not do that + (uid, bApple, bZebra) <- runDB $ do + uid <- createTestUser + bZebra <- createBmAt uid "https://z.com" "Zebra" t0 + bApple <- createBmAt uid "https://a.com" "apple" t0 + return (uid, bApple, bZebra) + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortTitle SortAsc) + liftIO $ bids `shouldBe` [bApple, bZebra] + + it "SortDesc reverses the order" $ do + (uid, bApple, bZebra) <- runDB $ do + uid <- createTestUser + bZebra <- createBmAt uid "https://z.com" "Zebra" t0 + bApple <- createBmAt uid "https://a.com" "apple" t0 + return (uid, bApple, bZebra) + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortTitle SortDesc) + liftIO $ bids `shouldBe` [bZebra, bApple] + + -- ─── BookmarkSortTagCount ───────────────────────────────────────────── + + describe "BookmarkSortTagCount" $ do + it "SortAsc orders fewest tags first, including untagged bookmarks" $ do + (uid, bNone, bOne, bTwo) <- runDB $ do + uid <- createTestUser + bTwo <- createBmAt uid "https://two.com" "two" t0 + bNone <- createBmAt uid "https://none.com" "none" t0 + bOne <- createBmAt uid "https://one.com" "one" t0 + tagBm uid bTwo "a" 1 + tagBm uid bTwo "b" 2 + tagBm uid bOne "a" 1 + return (uid, bNone, bOne, bTwo) + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortTagCount SortAsc) + liftIO $ bids `shouldBe` [bNone, bOne, bTwo] + + it "SortDesc orders most tags first" $ do + (uid, bNone, bOne, bTwo) <- runDB $ do + uid <- createTestUser + bTwo <- createBmAt uid "https://two.com" "two" t0 + bNone <- createBmAt uid "https://none.com" "none" t0 + bOne <- createBmAt uid "https://one.com" "one" t0 + tagBm uid bTwo "a" 1 + tagBm uid bTwo "b" 2 + tagBm uid bOne "a" 1 + return (uid, bNone, bOne, bTwo) + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortTagCount SortDesc) + liftIO $ bids `shouldBe` [bTwo, bOne, bNone] + + it "excludes dot-prefixed tags from the count for non-owners" $ do + -- bFew: 2 public tags. bMany: 1 public + 2 dot-prefixed (private) tags. + -- owner sees bMany (3) > bFew (2); a non-owner, with private tags + -- stripped, must see bMany (1) < bFew (2) -- the order should flip. + (uid, bFew, bMany) <- runDB $ do + uid <- createTestUser + bFew <- createBmAt uid "https://few.com" "few" t0 + bMany <- createBmAt uid "https://many.com" "many" t0 + tagBm uid bFew "public1" 1 + tagBm uid bFew "public2" 2 + tagBm uid bMany "public1" 1 + tagBm uid bMany ".secret1" 2 + tagBm uid bMany ".secret2" 3 + return (uid, bFew, bMany) + ownerOrder <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortTagCount SortAsc) + liftIO $ ownerOrder `shouldBe` [bFew, bMany] + nonOwnerOrder <- runDB $ queryOrder uid False (BookmarkSort BookmarkSortTagCount SortAsc) + liftIO $ nonOwnerOrder `shouldBe` [bMany, bFew] + + -- ─── BookmarkSortUrl ───────────────────────────────────────────────── + + describe "BookmarkSortUrl" $ do + it "SortAsc orders by href with the scheme ignored" $ do + -- byte order by full href would put "ftp://" before "http://" + -- before "https://"; sorting on the post-scheme remainder must not + (uid, bAlpha, bBravo, bCharlie) <- runDB $ do + uid <- createTestUser + bCharlie <- createBmAt uid "https://charlie.com/p" "c" t0 + bAlpha <- createBmAt uid "ftp://alpha.com/p" "a" t0 + bBravo <- createBmAt uid "http://bravo.com/p" "b" t0 + return (uid, bAlpha, bBravo, bCharlie) + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortUrl SortAsc) + liftIO $ bids `shouldBe` [bAlpha, bBravo, bCharlie] + + it "SortDesc reverses the order" $ do + (uid, bAlpha, bBravo, bCharlie) <- runDB $ do + uid <- createTestUser + bCharlie <- createBmAt uid "https://charlie.com/p" "c" t0 + bAlpha <- createBmAt uid "ftp://alpha.com/p" "a" t0 + bBravo <- createBmAt uid "http://bravo.com/p" "b" t0 + return (uid, bAlpha, bBravo, bCharlie) + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortUrl SortDesc) + liftIO $ bids `shouldBe` [bCharlie, bBravo, bAlpha] + + it "sorts a schemeless href by its full value" $ do + (uid, bNoScheme, bWithScheme) <- runDB $ do + uid <- createTestUser + bWithScheme <- createBmAt uid "https://zzz.com" "z" t0 + bNoScheme <- createBmAt uid "aaa-no-scheme" "n" t0 + return (uid, bNoScheme, bWithScheme) + -- "aaa-no-scheme" sorts before the scheme-stripped "zzz.com" + bids <- runDB $ queryOrder uid True (BookmarkSort BookmarkSortUrl SortAsc) + liftIO $ bids `shouldBe` [bNoScheme, bWithScheme] + + -- ─── cursor paging is only defined for time sorts ───────────────────── + + describe "before/after cursor paging" $ do + it "has no filtering effect when sorting by a non-default field" $ do + (uid, bOld, bNew) <- runDB $ do + uid <- createTestUser + bOld <- createBmAt uid "https://old.com" "aaa" t0 + bNew <- createBmAt uid "https://new.com" "bbb" (addUTCTime 100 t0) + return (uid, bOld, bNew) + -- a "before t0" cursor would normally exclude bOld under time sort; + -- under title sort mkBookmarkPaging must discard it entirely + (_, rows, _, _) <- + runDB + $ bookmarksTagsQuery + uid + True + SharedAll + FilterAll + [] + Nothing + (mkBookmarkPaging (BookmarkSort BookmarkSortTitle SortAsc) (Just (PagingCursorBefore (BookmarkCursor t0 Nothing))) 1) + 100 + let bids = map (entityKey . fst) rows + liftIO $ bids `shouldBe` [bOld, bNew] + + it "does not reverse results when an after-cursor is given with a non-default sort" $ do + -- an "after t0" cursor would normally exclude bOld and, on the + -- PagingCursorAfter path, trigger a reverse() to restore display + -- order; under title sort neither must happen + (uid, bOld, bNew) <- runDB $ do + uid <- createTestUser + bOld <- createBmAt uid "https://old.com" "aaa" t0 + bNew <- createBmAt uid "https://new.com" "bbb" (addUTCTime 100 t0) + return (uid, bOld, bNew) + (_, rows, _, _) <- + runDB + $ bookmarksTagsQuery + uid + True + SharedAll + FilterAll + [] + Nothing + (mkBookmarkPaging (BookmarkSort BookmarkSortTitle SortAsc) (Just (PagingCursorAfter (BookmarkCursor t0 Nothing))) 1) + 100 + let bids = map (entityKey . fst) rows + liftIO $ bids `shouldBe` [bOld, bNew] + + -- ─── hasEarlier/hasLater fallback (page/offset) paging ───────────────── + + describe "hasEarlier/hasLater for non-default sorts (page/offset fallback)" $ do + it "first page with more rows beyond the limit: hasEarlier=False, hasLater=True" $ do + uid <- runDB $ do + uid <- createTestUser + mapM_ + (\n -> void $ createBmAt uid ("https://" <> tshow (n :: Int) <> ".com") (tshow n) t0) + [1 .. 3] + return uid + (hasEarlier, hasLater) <- runDB $ queryPageFlags uid (BookmarkSort BookmarkSortTitle SortAsc) 2 1 + liftIO $ hasEarlier `shouldBe` False + liftIO $ hasLater `shouldBe` True + + it "last page: hasEarlier=True, hasLater=False" $ do + uid <- runDB $ do + uid <- createTestUser + mapM_ + (\n -> void $ createBmAt uid ("https://" <> tshow (n :: Int) <> ".com") (tshow n) t0) + [1 .. 3] + return uid + (hasEarlier, hasLater) <- runDB $ queryPageFlags uid (BookmarkSort BookmarkSortTitle SortAsc) 2 2 + liftIO $ hasEarlier `shouldBe` True + liftIO $ hasLater `shouldBe` False + + it "single page, all rows fit: hasEarlier=False, hasLater=False" $ do + uid <- runDB $ do + uid <- createTestUser + _ <- createBmAt uid "https://a.com" "a" t0 + return uid + (hasEarlier, hasLater) <- runDB $ queryPageFlags uid (BookmarkSort BookmarkSortTitle SortAsc) 100 1 + liftIO $ hasEarlier `shouldBe` False + liftIO $ hasLater `shouldBe` False
+ test/Model/NotesPagingSpec.hs view
@@ -0,0 +1,137 @@+{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE NoImplicitPrelude #-} + +module Model.NotesPagingSpec (spec) where + +import Data.Time (addUTCTime) +import Model.Custom (hashPasswordBCryptWithPolicy, mkNtSlug) +import TestImport +import Types (DB) + +t0 :: UTCTime +t0 = UTCTime (fromGregorian 2024 1 1) 0 + +createTestUser :: DB (Key User) +createTestUser = do + pwHash <- liftIO $ hashPasswordBCryptWithPolicy bcryptTestPolicy "pass" + insert $ User "testuser" pwHash Nothing False False True True False False True Nothing + +createNoteAt :: Key User -> Text -> UTCTime -> DB (Key Note) +createNoteAt uid title t = do + slug <- liftIO mkNtSlug + insert $ Note uid slug (length title) title "text" False False t t + +queryDir :: SortDirection -> Key User -> Maybe NotePagingCursor -> Limit -> DB ([Key Note], Bool, Bool) +queryDir dir uid mcursor lim = do + (_, rows, hasEarlier, hasLater) <- getNoteList uid Nothing SharedAll (PageByCursor dir mcursor) lim + return (map entityKey rows, hasEarlier, hasLater) + +queryWithCursor :: Key User -> Maybe NotePagingCursor -> DB [Key Note] +queryWithCursor uid mcursor = do + (nids, _, _) <- queryDir SortDesc uid mcursor 100 + return nids + +beforeT :: UTCTime -> Maybe NotePagingCursor +beforeT t = Just (PagingCursorBefore (NoteCursor t Nothing)) + +afterT :: UTCTime -> Maybe NotePagingCursor +afterT t = Just (PagingCursorAfter (NoteCursor t Nothing)) + +spec :: Spec +spec = withApp $ do + describe "getNoteList paging cursor" $ do + + -- ─── Cursor boundaries ───────────────────────────────────────────────── + + describe "cursor boundaries" $ do + it "PagingCursorBefore excludes a note at exactly the cursor time" $ do + (uid, nid) <- runDB $ do + uid <- createTestUser + nid <- createNoteAt uid "a" t0 + return (uid, nid) + nids <- runDB $ queryWithCursor uid (beforeT t0) + liftIO $ nids `shouldNotContain` [nid] + + it "PagingCursorBefore includes a note strictly before the cursor time" $ do + (uid, nid) <- runDB $ do + uid <- createTestUser + nid <- createNoteAt uid "a" t0 + return (uid, nid) + nids <- runDB $ queryWithCursor uid (beforeT (addUTCTime 1 t0)) + liftIO $ nids `shouldContain` [nid] + + it "PagingCursorAfter excludes a note at exactly the cursor time" $ do + (uid, nid) <- runDB $ do + uid <- createTestUser + nid <- createNoteAt uid "a" t0 + return (uid, nid) + nids <- runDB $ queryWithCursor uid (afterT t0) + liftIO $ nids `shouldNotContain` [nid] + + it "PagingCursorAfter includes a note strictly after the cursor time" $ do + (uid, nid) <- runDB $ do + uid <- createTestUser + nid <- createNoteAt uid "a" (addUTCTime 1 t0) + return (uid, nid) + nids <- runDB $ queryWithCursor uid (afterT t0) + liftIO $ nids `shouldContain` [nid] + + -- ─── Composite (time, id) keyset tie-breaking ────────────────────────── + + describe "composite (time, id) cursor tie-breaking" $ do + it "PagingCursorBefore keeps only same-time rows with a smaller id" $ do + (uid, n1, n2, _) <- runDB $ do + uid <- createTestUser + n1 <- createNoteAt uid "1" t0 + n2 <- createNoteAt uid "2" t0 + n3 <- createNoteAt uid "3" t0 + return (uid, n1, n2, n3) + nids <- runDB $ queryWithCursor uid (Just (PagingCursorBefore (NoteCursor t0 (Just n2)))) + liftIO $ nids `shouldBe` [n1] + + it "PagingCursorAfter keeps only same-time rows with a larger id" $ do + (uid, n2, n3) <- runDB $ do + uid <- createTestUser + _ <- createNoteAt uid "1" t0 + n2 <- createNoteAt uid "2" t0 + n3 <- createNoteAt uid "3" t0 + return (uid, n2, n3) + nids <- runDB $ queryWithCursor uid (Just (PagingCursorAfter (NoteCursor t0 (Just n2)))) + liftIO $ nids `shouldBe` [n3] + + it "a time-only cursor still uses the pure time boundary" $ do + (uid, nOld) <- runDB $ do + uid <- createTestUser + nOld <- createNoteAt uid "old" (addUTCTime (-1) t0) + _ <- createNoteAt uid "tied" t0 + return (uid, nOld) + nids <- runDB $ queryWithCursor uid (beforeT t0) + liftIO $ nids `shouldBe` [nOld] + + it "pages through rows sharing one timestamp without skips or repeats" $ do + (uid, allNids) <- runDB $ do + uid <- createTestUser + nids <- mapM (\n -> createNoteAt uid (tshow (n :: Int)) t0) [1 .. 5] + return (uid, nids) + -- newest-first display of same-time rows falls back to id desc + let walk acc mcursor = do + (nids, _, _) <- runDB $ queryDir SortDesc uid mcursor 2 + case lastMay nids of + Nothing -> pure acc + Just lastNid -> walk (acc <> nids) (Just (PagingCursorBefore (NoteCursor t0 (Just lastNid)))) + collected <- walk [] Nothing + liftIO $ collected `shouldBe` reverse allNids + + it "pages forward through rows sharing one timestamp without skips or repeats" $ do + (uid, allNids) <- runDB $ do + uid <- createTestUser + nids <- mapM (\n -> createNoteAt uid (tshow (n :: Int)) t0) [1 .. 5] + return (uid, nids) + -- oldest-first display of same-time rows falls back to id asc + let walk acc mcursor = do + (nids, _, _) <- runDB $ queryDir SortAsc uid mcursor 2 + case lastMay nids of + Nothing -> pure acc + Just lastNid -> walk (acc <> nids) (Just (PagingCursorAfter (NoteCursor t0 (Just lastNid)))) + collected <- walk [] Nothing + liftIO $ collected `shouldBe` allNids
test/Model/NotesSearchSpec.hs view
@@ -22,7 +22,7 @@ search :: Key User -> SharedP -> Maybe Text -> DB [Key Note] search uid sharedp mquery = do - (_, rows, _, _) <- getNoteList uid mquery Nothing sharedp 100 1 + (_, rows, _, _) <- getNoteList uid mquery sharedp (mkNotePaging defaultNoteSort Nothing 1) 100 return $ map entityKey rows spec :: Spec @@ -47,6 +47,37 @@ return (uid, nid1) nids <- runDB $ search uid SharedAll (Just "markdown:tutorial") liftIO $ nids `shouldBe` [nid1] + + it "title= matches only when the entire title equals the term" $ do + (uid, nExact) <- runDB $ do + uid <- createTestUser + nExact <- createNote uid "haskell" False False + _ <- createNote uid "haskell tutorial" False False + return (uid, nExact) + nids <- runDB $ search uid SharedAll (Just "title=haskell") + liftIO $ nids `shouldBe` [nExact] + + it "d= matches only when the entire text equals the term" $ do + (uid, nid) <- runDB $ do + uid <- createTestUser + nid <- createNote uid "a" False False + return (uid, nid) + nids <- runDB $ search uid SharedAll (Just "d=text") + liftIO $ nids `shouldBe` [nid] + nids' <- runDB $ search uid SharedAll (Just "d=tex") + liftIO $ nids' `shouldBe` [] + + it "supports parentheses grouping with OR and NOT" $ do + (uid, nApple, nBananaCherry, nBanana) <- runDB $ do + uid <- createTestUser + nApple <- createNote uid "apple pie" False False + nBananaCherry <- createNote uid "banana cherry smoothie" False False + nBanana <- createNote uid "banana bread" False False + return (uid, nApple, nBananaCherry, nBanana) + nids <- runDB $ search uid SharedAll (Just "apple|(banana cherry)") + liftIO $ sort nids `shouldBe` sort [nApple, nBananaCherry] + nids' <- runDB $ search uid SharedAll (Just "-(banana cherry)") + liftIO $ sort nids' `shouldBe` sort [nApple, nBanana] it "the shared filter restricts results" $ do (uid, nid1, nid2) <- runDB $ do
+ test/Model/NotesSortSpec.hs view
@@ -0,0 +1,151 @@+{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE NoImplicitPrelude #-} + +module Model.NotesSortSpec (spec) where + +import Data.Time (addUTCTime) +import Model.Custom (hashPasswordBCryptWithPolicy, mkNtSlug) +import TestImport +import Types (DB) + +t0 :: UTCTime +t0 = UTCTime (fromGregorian 2024 1 1) 0 + +createTestUser :: DB (Key User) +createTestUser = do + pwHash <- liftIO $ hashPasswordBCryptWithPolicy bcryptTestPolicy "pass" + insert $ User "testuser" pwHash Nothing False False True True False False True Nothing + +createNoteAt :: Key User -> Text -> UTCTime -> DB (Key Note) +createNoteAt uid title t = do + slug <- liftIO mkNtSlug + insert $ Note uid slug (length title) title "text" False False t t + +queryOrder :: Key User -> NoteSort -> DB [Key Note] +queryOrder uid nsort = do + (_, rows, _, _) <- getNoteList uid Nothing SharedAll (mkNotePaging nsort Nothing 1) 100 + return $ map entityKey rows + +queryPageFlags :: Key User -> NoteSort -> Limit -> Page -> DB (Bool, Bool) +queryPageFlags uid nsort lim pg = do + (_, _, hasEarlier, hasLater) <- getNoteList uid Nothing SharedAll (mkNotePaging nsort Nothing pg) lim + return (hasEarlier, hasLater) + +spec :: Spec +spec = withApp $ do + describe "getNoteList sort" $ do + -- ─── NoteSortCreated ───────────────────────────────────────────────── + + describe "NoteSortCreated" $ do + it "SortAsc orders oldest first" $ do + (uid, nOld, nNew) <- runDB $ do + uid <- createTestUser + nNew <- createNoteAt uid "new" (addUTCTime 100 t0) + nOld <- createNoteAt uid "old" t0 + return (uid, nOld, nNew) + nids <- runDB $ queryOrder uid (NoteSort NoteSortCreated SortAsc) + liftIO $ nids `shouldBe` [nOld, nNew] + + it "SortDesc orders newest first" $ do + (uid, nOld, nNew) <- runDB $ do + uid <- createTestUser + nNew <- createNoteAt uid "new" (addUTCTime 100 t0) + nOld <- createNoteAt uid "old" t0 + return (uid, nOld, nNew) + nids <- runDB $ queryOrder uid (NoteSort NoteSortCreated SortDesc) + liftIO $ nids `shouldBe` [nNew, nOld] + + -- ─── NoteSortTitle ─────────────────────────────────────────────────── + + describe "NoteSortTitle" $ do + it "SortAsc orders case-insensitively" $ do + -- byte/ASCII ordering would put "Zebra" ('Z'=90) before "apple" + -- ('a'=97); a correct case-insensitive sort must not do that + (uid, nApple, nZebra) <- runDB $ do + uid <- createTestUser + nZebra <- createNoteAt uid "Zebra" t0 + nApple <- createNoteAt uid "apple" t0 + return (uid, nApple, nZebra) + nids <- runDB $ queryOrder uid (NoteSort NoteSortTitle SortAsc) + liftIO $ nids `shouldBe` [nApple, nZebra] + + it "SortDesc reverses the order" $ do + (uid, nApple, nZebra) <- runDB $ do + uid <- createTestUser + nZebra <- createNoteAt uid "Zebra" t0 + nApple <- createNoteAt uid "apple" t0 + return (uid, nApple, nZebra) + nids <- runDB $ queryOrder uid (NoteSort NoteSortTitle SortDesc) + liftIO $ nids `shouldBe` [nZebra, nApple] + + -- ─── cursor paging is only defined for created sorts ─────────────────── + + describe "before/after cursor paging" $ do + it "has no filtering effect when sorting by a non-default field" $ do + (uid, nOld, nNew) <- runDB $ do + uid <- createTestUser + nOld <- createNoteAt uid "aaa" t0 + nNew <- createNoteAt uid "bbb" (addUTCTime 100 t0) + return (uid, nOld, nNew) + -- a "before t0" cursor would normally exclude nOld under created + -- sort; under title sort mkNotePaging must discard it entirely + (_, rows, _, _) <- + runDB + $ getNoteList + uid + Nothing + SharedAll + (mkNotePaging (NoteSort NoteSortTitle SortAsc) (Just (PagingCursorBefore (NoteCursor t0 Nothing))) 1) + 100 + let nids = map entityKey rows + liftIO $ nids `shouldBe` [nOld, nNew] + + it "does not reverse results when an after-cursor is given with a non-default sort" $ do + -- an "after t0" cursor would normally exclude nOld and, on the + -- PagingCursorAfter path, trigger a reverse() to restore display + -- order; under title sort neither must happen + (uid, nOld, nNew) <- runDB $ do + uid <- createTestUser + nOld <- createNoteAt uid "aaa" t0 + nNew <- createNoteAt uid "bbb" (addUTCTime 100 t0) + return (uid, nOld, nNew) + (_, rows, _, _) <- + runDB + $ getNoteList + uid + Nothing + SharedAll + (mkNotePaging (NoteSort NoteSortTitle SortAsc) (Just (PagingCursorAfter (NoteCursor t0 Nothing))) 1) + 100 + let nids = map entityKey rows + liftIO $ nids `shouldBe` [nOld, nNew] + + -- ─── hasEarlier/hasLater fallback (page/offset) paging ───────────────── + + describe "hasEarlier/hasLater for non-default sorts (page/offset fallback)" $ do + it "first page with more rows beyond the limit: hasEarlier=False, hasLater=True" $ do + uid <- runDB $ do + uid <- createTestUser + mapM_ (\n -> void $ createNoteAt uid (tshow (n :: Int)) t0) [1 .. 3] + return uid + (hasEarlier, hasLater) <- runDB $ queryPageFlags uid (NoteSort NoteSortTitle SortAsc) 2 1 + liftIO $ hasEarlier `shouldBe` False + liftIO $ hasLater `shouldBe` True + + it "last page: hasEarlier=True, hasLater=False" $ do + uid <- runDB $ do + uid <- createTestUser + mapM_ (\n -> void $ createNoteAt uid (tshow (n :: Int)) t0) [1 .. 3] + return uid + (hasEarlier, hasLater) <- runDB $ queryPageFlags uid (NoteSort NoteSortTitle SortAsc) 2 2 + liftIO $ hasEarlier `shouldBe` True + liftIO $ hasLater `shouldBe` False + + it "single page, all rows fit: hasEarlier=False, hasLater=False" $ do + uid <- runDB $ do + uid <- createTestUser + _ <- createNoteAt uid "a" t0 + return uid + (hasEarlier, hasLater) <- runDB $ queryPageFlags uid (NoteSort NoteSortTitle SortAsc) 100 1 + liftIO $ hasEarlier `shouldBe` False + liftIO $ hasLater `shouldBe` False
+ test/Model/NotesUpsertSpec.hs view
@@ -0,0 +1,85 @@+{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE NoImplicitPrelude #-} + +module Model.NotesUpsertSpec (spec) where + +import Model.Custom (NtSlug, hashPasswordBCryptWithPolicy, mkNtSlug) +import TestImport +import Types (DB) + +t0 :: UTCTime +t0 = UTCTime (fromGregorian 2024 1 1) 0 + +t1 :: UTCTime +t1 = UTCTime (fromGregorian 2024 1 2) 0 + +createTestUser :: DB (Key User) +createTestUser = do + pwHash <- liftIO $ hashPasswordBCryptWithPolicy bcryptTestPolicy "pass" + insert $ User "testuser" pwHash Nothing False False True True False False True Nothing + +createNoteAt :: Key User -> Text -> UTCTime -> DB (Key Note) +createNoteAt uid title updated = do + slug <- liftIO mkNtSlug + insert $ Note uid slug (length title) title "text" False False t0 updated + +getNote' :: Key Note -> DB (Maybe Note) +getNote' nid = fmap entityVal <$> selectFirst [NoteId ==. nid] [] + +mkNoteEdit :: Key User -> NtSlug -> Text -> UTCTime -> Note +mkNoteEdit uid slug title clientKnownUpdated = + Note + { noteUserId = uid, + noteSlug = slug, + noteLength = length title, + noteTitle = title, + noteText = "edited text", + noteIsMarkdown = False, + noteShared = False, + noteCreated = t0, + noteUpdated = clientKnownUpdated + } + +spec :: Spec +spec = withApp $ do + describe "upsertNote" $ do + it "sets updated to now on a successful edit" $ do + beforeTime <- liftIO getCurrentTime + (uid, nid) <- runDB $ do + uid <- createTestUser + nid <- createNoteAt uid "a" t0 + return (uid, nid) + slug <- liftIO mkNtSlug + let edit = mkNoteEdit uid slug "edited" t0 + result <- runDB $ upsertNote uid (Just nid) edit + afterTime <- liftIO getCurrentTime + case result of + Updated (Entity resultNid _) -> liftIO $ resultNid `shouldBe` nid + other -> liftIO $ expectationFailure ("expected Updated, got " <> show other) + mnote <- runDB $ getNote' nid + case mnote of + Nothing -> liftIO $ expectationFailure "note missing after update" + Just note -> liftIO $ do + noteUpdated note >= beforeTime `shouldBe` True + noteUpdated note <= afterTime `shouldBe` True + + it "fails when the stored copy was updated more recently than the client's copy" $ do + (uid, nid) <- runDB $ do + uid <- createTestUser + nid <- createNoteAt uid "a" t1 + return (uid, nid) + slug <- liftIO mkNtSlug + let edit = mkNoteEdit uid slug "edited" t0 + result <- runDB $ upsertNote uid (Just nid) edit + liftIO $ result `shouldBe` Failed ReasonConflictWithNewer + mnote <- runDB $ getNote' nid + liftIO $ fmap noteTitle mnote `shouldBe` Just "a" + + it "creates a new note when no id is given" $ do + uid <- runDB createTestUser + slug <- liftIO mkNtSlug + let note = mkNoteEdit uid slug "new" t0 + result <- runDB $ upsertNote uid Nothing note + liftIO $ case result of + Created _ -> pure () + other -> expectationFailure ("expected Created, got " <> show other)