@vellumai/web 0.11.4 → 0.11.5-staging.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AnimatePresence-CxaKvfs9.js → AnimatePresence-DkZYJl3q.js} +1 -1
- package/dist/assets/{Trans-FBE1EuwL.js → Trans-CM5UUgDt.js} +1 -1
- package/dist/assets/{a2a-invite-lHsf93YX.js → a2a-invite-CduLLtki.js} +1 -1
- package/dist/assets/{about-page-ByfiFQot.js → about-page-c1mqdjOr.js} +1 -1
- package/dist/assets/{account-page-Df1VB34_.js → account-page-CSJOSKzD.js} +1 -1
- package/dist/assets/{account-shell-Dk4m-iaE.js → account-shell-WRaiE1O8.js} +1 -1
- package/dist/assets/{acp-run-actions-FLArlHEs.js → acp-run-actions-DNNBiPfr.js} +1 -1
- package/dist/assets/{acp-run-detail-panel-DsqMAPE4.js → acp-run-detail-panel-gR77X6Xm.js} +1 -1
- package/dist/assets/{acp-run-store-De5GuSFn.js → acp-run-store-BUcMP80V.js} +1 -1
- package/dist/assets/activity-steps-panel-BglLu7wx.js +1 -0
- package/dist/assets/{add-credential-modal-vRe51ERD.js → add-credential-modal-DgoBqgwB.js} +1 -1
- package/dist/assets/add-credits-modal-BNab_7H9.js +1 -0
- package/dist/assets/ai-page-CLAFnWl5.js +1 -0
- package/dist/assets/{animate-BhosXxi-.js → animate-1rkqw0bf.js} +1 -1
- package/dist/assets/{animated-avatar-DsEiCrtA.js → animated-avatar-Bk5J30oP.js} +1 -1
- package/dist/assets/api-ByKY0Cbt.js +1 -0
- package/dist/assets/api-DBKgmyno.js +1 -0
- package/dist/assets/{api-errors-CASENJGT.js → api-errors-DYGVb-Sh.js} +1 -1
- package/dist/assets/api-key-screen-CS0KZgP6.js +1 -0
- package/dist/assets/{app-card-CjRGDYCX.js → app-card-C7c3c4l4.js} +1 -1
- package/dist/assets/{app-info-CvBesesf.js → app-info-CEe_jK5S.js} +1 -1
- package/dist/assets/{archive-redirect-page-LFqfq3Zx.js → archive-redirect-page-DZkHnLmA.js} +1 -1
- package/dist/assets/{assistant-feature-flag-store-CNWz-RMv.js → assistant-feature-flag-store-CdXRp9pV.js} +1 -1
- package/dist/assets/{assistant-status-panel-BkLYzQAL.js → assistant-status-panel-BogBdYLj.js} +1 -1
- package/dist/assets/auth-store-iNnDaLgR.js +2 -0
- package/dist/assets/auth-welcome-screen-BoiE47Sg.js +1 -0
- package/dist/assets/{avatar-random-B5F8Cp2E.js → avatar-random-C7t2cN3Y.js} +1 -1
- package/dist/assets/{avatar-renderer-DSa5eaH2.js → avatar-renderer-DvM-sFyU.js} +1 -1
- package/dist/assets/{background-task-actions-rGTNVeqo.js → background-task-actions-D-C9wSSf.js} +1 -1
- package/dist/assets/{background-task-detail-panel-DtJ1ZolD.js → background-task-detail-panel-BeXbhHLZ.js} +1 -1
- package/dist/assets/{background-task-store-svLgwmNn.js → background-task-store-D3W6TX_2.js} +1 -1
- package/dist/assets/billing-page-PuFxEptl.js +3 -0
- package/dist/assets/{billing-redirect-page-B6zuKMxb.js → billing-redirect-page-BFDitQeE.js} +1 -1
- package/dist/assets/bookmarks-page-DY_CJ4I3.js +1 -0
- package/dist/assets/{browser-Ca2R8csw.js → browser--x9YKXWo.js} +2 -2
- package/dist/assets/{build-state-laR44jYU.js → build-state-Dtia1Hnq.js} +1 -1
- package/dist/assets/{bundle-confirm-page-D7_j_7v3.js → bundle-confirm-page-9Jl2oXni.js} +1 -1
- package/dist/assets/{button-VkxVX0DM.js → button-C8CGr0T0.js} +1 -1
- package/dist/assets/{capture-error-DiNp24s6.js → capture-error-VBsIaC5d.js} +1 -1
- package/dist/assets/{channels-page-route-sLLh-p2k.js → channels-page-route-WZWPUfRo.js} +1 -1
- package/dist/assets/chat-QLQLsbFK.js +3 -0
- package/dist/assets/{chat-avatar-D7ZBWcZy.js → chat-avatar-DInCdP5z.js} +1 -1
- package/dist/assets/chat-markdown-message-JeYI9m3i.js +1 -0
- package/dist/assets/chat-z1gK656n.js +1 -0
- package/dist/assets/{checkbox-CyG1nZhR.js → checkbox-BWX_Dnge.js} +1 -1
- package/dist/assets/checkout-continuation-B-A9SoHt.js +1 -0
- package/dist/assets/checkout-page-BYHPD7UJ.js +1 -0
- package/dist/assets/checkout-return-target-DnT91-Y_.js +1 -0
- package/dist/assets/{client-feature-flag-store-CT2T_Fg7.js → client-feature-flag-store-DuVzcD-V.js} +1 -1
- package/dist/assets/{client-perf-BZu5XQCP.js → client-perf-Bg-CBIVj.js} +1 -1
- package/dist/assets/{command-palette-B6PZe9A0.js → command-palette-C8JWMyiC.js} +1 -1
- package/dist/assets/{command-palette-window-page-BYkkAV88.js → command-palette-window-page-C8vw0yIO.js} +1 -1
- package/dist/assets/common-gaw6OefS.js +1 -0
- package/dist/assets/community-page-DvR4X6k9.js +1 -0
- package/dist/assets/{companion-surface-CZHv2avR.js → companion-surface-Cnmjk-6O.js} +1 -1
- package/dist/assets/companion-surface-page-iknPQRTu.js +1 -0
- package/dist/assets/composer-settings-B84-FOM1.js +1 -0
- package/dist/assets/{confirm-dialog-Drw1adml.js → confirm-dialog-DYmL6FRe.js} +1 -1
- package/dist/assets/{connect-page-DiO1EqEC.js → connect-page-CKAizrWr.js} +1 -1
- package/dist/assets/{consent-controls-B_zCicqo.js → consent-controls-V9Wca6TV.js} +1 -1
- package/dist/assets/{contacts-gateway-CZNNXLeD.js → contacts-gateway-CoPOXTzi.js} +1 -1
- package/dist/assets/{contacts-page-route-fUfbhwZ5.js → contacts-page-route-BceswcoE.js} +1 -1
- package/dist/assets/conversation-cache-CuEQRyqi.js +1 -0
- package/dist/assets/conversation-navigation-CfOyMc6W.js +1 -0
- package/dist/assets/conversation-queries-CtAFZgFP.js +1 -0
- package/dist/assets/{conversation-selection-4ubh2ui-.js → conversation-selection-ZuF7NVBR.js} +1 -1
- package/dist/assets/{copy-to-clipboard-D76_3Coc.js → copy-to-clipboard-yufQqRBL.js} +1 -1
- package/dist/assets/{credential-entry-page--HYBfvoW.js → credential-entry-page-B0NYTomQ.js} +1 -1
- package/dist/assets/credentials-page-DfOet7SI.js +1 -0
- package/dist/assets/{use-avatar-accent-var-DN_cfh4V.js → credit-tiers-Bc9xxLBK.js} +1 -1
- package/dist/assets/{csv-preview-T_KT_vef.js → csv-preview-QUU-h2MX.js} +1 -1
- package/dist/assets/{danger-zone-redirect-page-BuIG9f9S.js → danger-zone-redirect-page-B_ZMX7ns.js} +1 -1
- package/dist/assets/debug-page-DXvFlnqh.js +4 -0
- package/dist/assets/{deploy-dialogs-CgicOESj.js → deploy-dialogs-ilUtMpvf.js} +1 -1
- package/dist/assets/{deploy-store-dyN183E8.js → deploy-store-C_y0BvwK.js} +1 -1
- package/dist/assets/{desktop-voice-activity-D1BSf0I-.js → desktop-voice-activity-B0dHlUep.js} +1 -1
- package/dist/assets/{detail-card-Bqnvs6YE.js → detail-card-DwBporBs.js} +1 -1
- package/dist/assets/{detail-drawer-j2jaITAL.js → detail-drawer-Di5V_iLf.js} +1 -1
- package/dist/assets/{detail-shell-D1UEZCzz.js → detail-shell-CcrQic9y.js} +1 -1
- package/dist/assets/developer-page-B_LQmpH7.js +1 -0
- package/dist/assets/{devices-redirect-page-BoKYF1E9.js → devices-redirect-page-BD0VY17t.js} +1 -1
- package/dist/assets/{diagnostics-CwFqcLv_.js → diagnostics-BcQgahbk.js} +1 -1
- package/dist/assets/{dictation-overlay-xS8BRhPs.js → dictation-overlay-BrXujvAw.js} +1 -1
- package/dist/assets/dictation-overlay-page-CfGmex7E.js +1 -0
- package/dist/assets/dist-BFOJNO7w.js +1 -0
- package/dist/assets/{dist-D94ZMew1.js → dist-BsGO-mS7.js} +1 -1
- package/dist/assets/{dist-CzN28mbE.js → dist-DN2Wju98.js} +1 -1
- package/dist/assets/{dist--4Bbb2u3.js → dist-eCSUXDGk.js} +1 -1
- package/dist/assets/{doctor-handoff-store-Cy96Na-O.js → doctor-handoff-store-B_RlFFKC.js} +1 -1
- package/dist/assets/{document-viewer-container-BMmSidmj.js → document-viewer-container-D3aPjnj8.js} +2 -2
- package/dist/assets/document-viewer-page-CvQXX7Mp.js +1 -0
- package/dist/assets/effective-timezone-CrnImpLf.js +1 -0
- package/dist/assets/{emails-page-CJM4OS94.js → emails-page-DbAVQ_jC.js} +1 -1
- package/dist/assets/{esm-BD6nxr-q.js → esm-4Bnaz5rU.js} +2 -2
- package/dist/assets/esm-C4VoH46A.js +1 -0
- package/dist/assets/{esm-nl105Ya0.js → esm-CrXbhSov.js} +2 -2
- package/dist/assets/{esm-BaEdQNCe.js → esm-DXPZZih3.js} +2 -2
- package/dist/assets/esm-DcJxSeV0.js +2 -0
- package/dist/assets/{esm-kYXyJ2zw.js → esm-Ddv_MyHw.js} +2 -2
- package/dist/assets/{esm-DTIJZw37.js → esm-Do2zrCWJ.js} +2 -2
- package/dist/assets/{esm-FpGTFn5W.js → esm-DrXV9mo-.js} +2 -2
- package/dist/assets/{external-anchor-CLy6d_za.js → external-anchor-owoORewf.js} +1 -1
- package/dist/assets/{eye-bbox-DoGcAx4c.js → eye-bbox-BpNolORP.js} +1 -1
- package/dist/assets/feature-flag-catalog-C1y2RUth.js +1 -0
- package/dist/assets/feed-item-status-actions-C3JfFvZc.js +1 -0
- package/dist/assets/{file-editor-BwdObVSu.js → file-editor-CeYfWNBz.js} +1 -1
- package/dist/assets/{file-markdown-C1rEGVrN.js → file-markdown-B9G_TXX-.js} +1 -1
- package/dist/assets/{first-run-scope-DdSaiULx.js → first-run-scope-MD-rEgje.js} +1 -1
- package/dist/assets/format-usd-BYzA1eMJ.js +1 -0
- package/dist/assets/{funnel-events-BP3XPaB5.js → funnel-events-ClGpFDNM.js} +1 -1
- package/dist/assets/general-page-CzDlVoNx.js +1 -0
- package/dist/assets/{get-memory-stats-SquVhZnd.js → get-memory-stats-U9zVanzc.js} +1 -1
- package/dist/assets/{haptics-D3hzTCtH.js → haptics-F-nvqKYf.js} +2 -2
- package/dist/assets/hatching-screen-FgNbjXOt.js +1 -0
- package/dist/assets/{home-page-route-BSoWksW0.js → home-page-route-C7Aeo-Mg.js} +1 -1
- package/dist/assets/hosting-screen-CLVRdDiX.js +1 -0
- package/dist/assets/{i18n-C9hRT4Lf.js → i18n-C3bX3mTs.js} +4 -4
- package/dist/assets/identity-DyjQj_xm.js +1 -0
- package/dist/assets/identity-page-route-CHncFua2.js +7 -0
- package/dist/assets/index-C7hCfQpd.css +2 -0
- package/dist/assets/index-DS0PEdhO.js +11 -0
- package/dist/assets/{ingest-DXklElaR.js → ingest-C1wiUm1l.js} +1 -1
- package/dist/assets/{input-DkgpMeG9.js → input-DlkBtbxm.js} +1 -1
- package/dist/assets/{inspect-page-naqIziez.js → inspect-page-CNLiZXRt.js} +3 -3
- package/dist/assets/{installed-plugins-query-CZLdpwnL.js → installed-plugins-query-DQKwv-Iz.js} +1 -1
- package/dist/assets/{integration-icon-DbmKvxqf.js → integration-icon-BxfDs-Ud.js} +1 -1
- package/dist/assets/integrations-page-B9SHiomg.js +1 -0
- package/dist/assets/intelligence-C7DYXerF.js +5 -0
- package/dist/assets/{intelligence-layout-CXzIl0Vl.js → intelligence-layout-BoW8JbDc.js} +1 -1
- package/dist/assets/internal-thread-actions-C0S_b7cx.js +1 -0
- package/dist/assets/{invalidate-memory-queries-C4-KSsdB.js → invalidate-memory-queries-uk2gV1m0.js} +1 -1
- package/dist/assets/{invalidate-plugin-queries-DxagFqKP.js → invalidate-plugin-queries-CI1Cseau.js} +1 -1
- package/dist/assets/keyboard-shortcuts-redirect-page-BY3Va4w9.js +1 -0
- package/dist/assets/{latest-assistant-text-JCjtByys.js → latest-assistant-text-fXT5Jkt8.js} +2 -2
- package/dist/assets/library-Da5KVeDF.js +1 -0
- package/dist/assets/{library-detail-page-CyWiXwb9.js → library-detail-page-CX92FKAK.js} +1 -1
- package/dist/assets/{library-page-CzcvMljL.js → library-page-D2v2j-WU.js} +1 -1
- package/dist/assets/{list-row-CDwzGT9g.js → list-row-6uedKE84.js} +1 -1
- package/dist/assets/llm-model-catalog-BxTXG4Cg.js +1 -0
- package/dist/assets/local-mode-DzIUFjhf.js +1 -0
- package/dist/assets/{local-runtime-upgrade-BkoG5uVr.js → local-runtime-upgrade-BpvLk3HN.js} +1 -1
- package/dist/assets/{login-flow-D6ivg6PM.js → login-flow-BYBqjDap.js} +1 -1
- package/dist/assets/{login-page-Dmpz0GgT.js → login-page-fl8rgXFq.js} +1 -1
- package/dist/assets/{logout-page-CI3LDcqG.js → logout-page-DLjLy7Hp.js} +1 -1
- package/dist/assets/{logs-layout-BHP-ADUq.js → logs-layout-Du4o-HeH.js} +1 -1
- package/dist/assets/{markdown-preview-Dx8E021p.js → markdown-preview-ukYPAksc.js} +1 -1
- package/dist/assets/media-preview-Ds0Jo4hk.js +1 -0
- package/dist/assets/{memory-page-route-qvBEERTa.js → memory-page-route-CvKjQ2FE.js} +1 -1
- package/dist/assets/memory-router-playground-page-Dh8zVze9.js +1 -0
- package/dist/assets/{menu-ubIBmfUh.js → menu-Ci8JeI2H.js} +1 -1
- package/dist/assets/message-content-C1CZhGIc.js +1 -0
- package/dist/assets/{message-files-panel-ZPa7eZHc.js → message-files-panel-DEAC2iCY.js} +1 -1
- package/dist/assets/messages-D5oI1yRV.js +13 -0
- package/dist/assets/{metric-card-bXd-f58c.js → metric-card-YqtdN5uX.js} +1 -1
- package/dist/assets/mime-sniff-BeXhZEXw.js +1 -0
- package/dist/assets/{modal-UYNawsIu.js → modal-DN_Uwwkg.js} +1 -1
- package/dist/assets/native-anchor-C13W_dF5.js +1 -0
- package/dist/assets/native-biometric-DzQYY-Z2.js +6 -0
- package/dist/assets/{native-file-BpFW1c_c.js → native-file-qM32rSz7.js} +2 -2
- package/dist/assets/navigation-resolver-B6QxHAa5.js +1 -0
- package/dist/assets/{not-found-ui-gcXqK.js → not-found-DXwfp4Yf.js} +1 -1
- package/dist/assets/{notice-BlYF-xU3.js → notice-C_AsX_o9.js} +1 -1
- package/dist/assets/{notifications-DK6b8YVI.js → notifications-DMNpr3pt.js} +1 -1
- package/dist/assets/notifications-page-DD-175gq.js +1 -0
- package/dist/assets/{oauth-complete-page-7NZZRVcj.js → oauth-complete-page-DBDWL3aD.js} +1 -1
- package/dist/assets/{oauth-popup-complete-page-Ci39YXpe.js → oauth-popup-complete-page-Dv0482xp.js} +1 -1
- package/dist/assets/onboarding-DwRWKhM_.js +1 -0
- package/dist/assets/onboarding-layout-CYgAi-S1.js +1 -0
- package/dist/assets/open-workspace-file-Ca9gUjoQ.js +2 -0
- package/dist/assets/{operational-status-CMN32PL8.js → operational-status-DVK3_kD_.js} +1 -1
- package/dist/assets/{page-shell-C3ZmdIop.js → page-shell-nVp2ogSk.js} +1 -1
- package/dist/assets/{pairing-page-YPN7ISIr.js → pairing-page-CLNSXQ7A.js} +1 -1
- package/dist/assets/{password-reset-page-D8ONrPU-.js → password-reset-page-BNw-K6vZ.js} +1 -1
- package/dist/assets/pdf-file-preview-DvhlIAI5.js +1 -0
- package/dist/assets/pdf-preview-BpUxb6wy.js +2 -0
- package/dist/assets/{personality-page-CLsRq5L2.js → personality-page-axIG9Tu_.js} +1 -1
- package/dist/assets/plans-page-DQu9C86N.js +1 -0
- package/dist/assets/{platform-detection-zth6eCY8.js → platform-detection-C-a_Mru0.js} +1 -1
- package/dist/assets/{platform-login-notice-CvFpWLJY.js → platform-login-notice-Dmq_2Akt.js} +1 -1
- package/dist/assets/{platform-loopback-page-B8cGk07e.js → platform-loopback-page-B0UOR3ct.js} +1 -1
- package/dist/assets/{plugin-detail-page--CvX0OXv.js → plugin-detail-page-2ySPND3h.js} +1 -1
- package/dist/assets/{plugins-page-CZ16U_6n.js → plugins-page-D7jLWtXv.js} +1 -1
- package/dist/assets/plugins-surface-CLatmeTO.js +1 -0
- package/dist/assets/pointer-Cxac45y6.js +1 -0
- package/dist/assets/popover-B_nY8VYI.js +1 -0
- package/dist/assets/{prefs-BLTugIFN.js → prefs-BFDWWNwd.js} +1 -1
- package/dist/assets/{preview-error-gCViZZRw.js → preview-error-B7qHC1Y4.js} +1 -1
- package/dist/assets/privacy-page-B-FaZv9p.js +1 -0
- package/dist/assets/privacy-screen-Ng4c4whW.js +1 -0
- package/dist/assets/profile-pickers-BE4eyfmO.js +1 -0
- package/dist/assets/{provider-callback-page-BPp1TM7J.js → provider-callback-page-CwYFxjk3.js} +1 -1
- package/dist/assets/{provider-key-DpdSx5gG.js → provider-key-D0kB_zjf.js} +1 -1
- package/dist/assets/{provider-signup-page-Cv9_b_58.js → provider-signup-page-BORU3SZe.js} +1 -1
- package/dist/assets/{provisioning-targets-DDUZDQ_a.js → provisioning-targets-D1mqFL8i.js} +1 -1
- package/dist/assets/{proxy-CT_qJI1K.js → proxy-C_GXGfwL.js} +1 -1
- package/dist/assets/{push-registration-CH_t0mI8.js → push-registration-CyLSsbG5.js} +2 -2
- package/dist/assets/{quick-input-page-LqfQdZFU.js → quick-input-page-D7nJMXNi.js} +1 -1
- package/dist/assets/react-query.gen-CYP-Tn4K.js +1 -0
- package/dist/assets/react-query.gen-D3r2fwXH.js +1 -0
- package/dist/assets/remote-gateway-session-B4C6b4Sx.js +1 -0
- package/dist/assets/remove-from-device-dialog-Bpy0yOG4.js +1 -0
- package/dist/assets/{research-facts-C2cY_gU2.js → research-facts-DzELMLzK.js} +1 -1
- package/dist/assets/{research-mock-page-CB1_bEoa.js → research-mock-page-BkcbRMpS.js} +1 -1
- package/dist/assets/{research-onboarding-persistence-Bx5cdkas.js → research-onboarding-persistence-BFdNebXL.js} +1 -1
- package/dist/assets/research-onboarding-route-BlBSSOiI.js +50 -0
- package/dist/assets/{research-results-view-BcQs2Zh9.js → research-results-view-D1hOhfTP.js} +1 -1
- package/dist/assets/{resolved-assistants-store-BNadgXqb.js → resolved-assistants-store-D57qRwKv.js} +1 -1
- package/dist/assets/retire-confirm-dialog-Zwo-Sjrc.js +1 -0
- package/dist/assets/{review-terms-screen-CI_29cnc.js → review-terms-screen-DmNdg_zJ.js} +1 -1
- package/dist/assets/routes-BaPyKuTq.js +24 -0
- package/dist/assets/routes-yNhBxUSb.js +1 -0
- package/dist/assets/runtime-upgrade-banner-bHSGkzwB.js +2 -0
- package/dist/assets/{sandbox-bridge-Dj1pIOXJ.js → sandbox-bridge-BcJiBmUR.js} +1 -1
- package/dist/assets/{schedules-C2Tr1zNV.js → schedules-CgwiGq3x.js} +1 -1
- package/dist/assets/schedules-DaGS9wMX.js +1 -0
- package/dist/assets/{schedules-page-0V6ECw0t.js → schedules-page-Ca_u2KkZ.js} +1 -1
- package/dist/assets/schemas-CwBN1MUL.js +39 -0
- package/dist/assets/{sdk.gen-DWvuzSBW.js → sdk.gen-DXPJc8Xk.js} +1 -1
- package/dist/assets/{sdk.gen-CiE6cMi0.js → sdk.gen-hZs6YBR0.js} +1 -1
- package/dist/assets/section-membership-CJlFrKoM.js +1 -0
- package/dist/assets/{security-redirect-page-D6x3MANY.js → security-redirect-page-eZ_C_Wf0.js} +1 -1
- package/dist/assets/{select-BKyejRky.js → select-DJDG9pwU.js} +1 -1
- package/dist/assets/select-assistant-screen-DSLQRer8.js +1 -0
- package/dist/assets/{self-hosted-servers-BviPyNnl.js → self-hosted-servers-DJIKPu90.js} +1 -1
- package/dist/assets/settings-BY8t4asx.js +1 -0
- package/dist/assets/{settings-divider-C0NZsB-L.js → settings-divider-BCyO1zmM.js} +1 -1
- package/dist/assets/settings-layout-Cv8u2dv7.js +1 -0
- package/dist/assets/settings-navigation-R6E3Weed.js +1 -0
- package/dist/assets/{share-feedback-modal-PlN6X3Pm.js → share-feedback-modal-COH8zwku.js} +2 -2
- package/dist/assets/{sidebar-tree-Bp0eeKf2.js → sidebar-tree-Bfvk_uAR.js} +1 -1
- package/dist/assets/{signup-page-gqz5_wG1.js → signup-page-BsMK6h9P.js} +1 -1
- package/dist/assets/{signup-shell-DW976E_0.js → signup-shell-OkpQCRuO.js} +1 -1
- package/dist/assets/{site-favicon-Cu07pwc9.js → site-favicon-Bu9L02gb.js} +1 -1
- package/dist/assets/{skill-detail-page-c0s3w3K3.js → skill-detail-page-D9WBRKuf.js} +1 -1
- package/dist/assets/{skill-detail-panel-NYXq557_.js → skill-detail-panel-kCMadngl.js} +1 -1
- package/dist/assets/{skills-5MnTu98B.js → skills-C3-ibGUo.js} +1 -1
- package/dist/assets/{skills-page-B_VTCiN2.js → skills-page-BMYP4Xi0.js} +1 -1
- package/dist/assets/sound-manager-CCbiDOQN.js +1 -0
- package/dist/assets/sounds-page-Du1t_S8A.js +1 -0
- package/dist/assets/{src-CImIAPTd.js → src-DMnnfLrU.js} +2 -2
- package/dist/assets/start-screen-I5HBKHT6.js +1 -0
- package/dist/assets/{status-badge-pill-D8m98tJa.js → status-badge-pill-w-ULYfRy.js} +1 -1
- package/dist/assets/{stt-language-picker-modal-BXLEBM7b.js → stt-language-picker-modal-Cq76JJex.js} +1 -1
- package/dist/assets/{subagent-detail-panel-CrbpQRzW.js → subagent-detail-panel-DP4dB-Dz.js} +1 -1
- package/dist/assets/{subagent-store-DqKEBlAM.js → subagent-store-Bn8k7JMr.js} +2 -2
- package/dist/assets/{superpowers-page-B5WGXphq.js → superpowers-page-COTkr31c.js} +1 -1
- package/dist/assets/{swipe-action-reveal-Ai9lRgUU.js → swipe-action-reveal-CQY9DSup.js} +1 -1
- package/dist/assets/{system-events-page-_aap_0av.js → system-events-page-CvoSQs7q.js} +1 -1
- package/dist/assets/{system-events-redirect-page-DbyqOqe_.js → system-events-redirect-page-BjnwAn9h.js} +1 -1
- package/dist/assets/{tag-Ddzwz3ij.js → tag-D2QYCm1p.js} +1 -1
- package/dist/assets/{telegram-setup-wizard-BENKNAuh.js → telegram-setup-wizard-6UP2MTrh.js} +1 -1
- package/dist/assets/{text-preview-DUlKYC4u.js → text-preview-BG__pDe7.js} +1 -1
- package/dist/assets/{theme-stage-page-CbGuxQ23.js → theme-stage-page-YfsM529J.js} +1 -1
- package/dist/assets/{threshold-presets-DN0_JIJQ.js → threshold-presets-BJubRlKn.js} +1 -1
- package/dist/assets/{tiptap-document-editor-0vqw7hch.js → tiptap-document-editor-BM6zL6R7.js} +2 -2
- package/dist/assets/{toast-DqqWkjsh.js → toast-CHtrY-GO.js} +1 -1
- package/dist/assets/{tool-detail-panel-C2wUYsf2.js → tool-detail-panel-_LC-zFuo.js} +3 -3
- package/dist/assets/transcript-message-body-shared-D8cmJP1C.js +1 -0
- package/dist/assets/{trust-rules-api-DRJ1qP-y.js → trust-rules-api-CE_KJOp2.js} +1 -1
- package/dist/assets/upgrade-cancel-page-DyLSvLsm.js +1 -0
- package/dist/assets/upgrade-success-page-BRPyFCq4.js +1 -0
- package/dist/assets/upload-Bilfs1g8.js +1 -0
- package/dist/assets/{usage-redirect-page-DyTnwv4x.js → usage-redirect-page-C4O5a5QM.js} +1 -1
- package/dist/assets/{use-active-assistant-id-BADYKVyx.js → use-active-assistant-id-BFE4r9Rp.js} +1 -1
- package/dist/assets/use-app-theme-BMyUWfBR.js +1 -0
- package/dist/assets/use-assistant-avatar-adekIS8v.js +1 -0
- package/dist/assets/{use-assistant-capability-C-yHcMH4.js → use-assistant-capability-Cjd57j4I.js} +1 -1
- package/dist/assets/{use-assistant-identity-details-u9sG9ip2.js → use-assistant-identity-details-C3sH1daz.js} +1 -1
- package/dist/assets/{use-attachment-preview-Cq_IWTdT.js → use-attachment-preview-BUJ9CHqr.js} +2 -2
- package/dist/assets/{use-attachment-squares-BKi30wmg.js → use-attachment-squares-CFAezuph.js} +1 -1
- package/dist/assets/use-bookmarks--Hn0Ty3s.js +1 -0
- package/dist/assets/{use-bundled-avatar-components-C_6xUsW1.js → use-bundled-avatar-components-Bhvvz-bQ.js} +2 -2
- package/dist/assets/{use-bus-subscription-BuhDYgS1.js → use-bus-subscription-BmtCG3i6.js} +1 -1
- package/dist/assets/use-checkout-dismiss-refresh-CTdb-p9h.js +1 -0
- package/dist/assets/{use-command-palette-sections-CvNjev8s.js → use-command-palette-sections-_F3pQkoi.js} +1 -1
- package/dist/assets/{use-copy-to-clipboard-B7Yrgm0s.js → use-copy-to-clipboard-BPX7B4SE.js} +1 -1
- package/dist/assets/use-edge-swipe-CJYjm94h.js +1 -0
- package/dist/assets/use-edge-swipe-back-L6kJ84LI.js +2 -0
- package/dist/assets/use-edit-app-C0wNLJT8.js +1 -0
- package/dist/assets/{use-effective-timezone-vox0__xI.js → use-effective-timezone-DaNOF607.js} +1 -1
- package/dist/assets/use-hotkey-recorder-BgB8ju9u.js +1 -0
- package/dist/assets/{use-invite-link-dialog-Chhnymz9.js → use-invite-link-dialog-B1oz9iwD.js} +1 -1
- package/dist/assets/use-is-mobile-BwSS15lq.js +1 -0
- package/dist/assets/{use-is-org-ready-GDBxqujc.js → use-is-org-ready-CEB5IRpO.js} +1 -1
- package/dist/assets/use-local-file-info-y_wvTOqp.js +1 -0
- package/dist/assets/{use-onboarding-login-BdVTfZ3o.js → use-onboarding-login-DSP8WCFe.js} +1 -1
- package/dist/assets/{use-platform-assistant-id-B7TrEBmf.js → use-platform-assistant-id-n0Yl5uUG.js} +1 -1
- package/dist/assets/{use-platform-gate-DG9Xg3Hs.js → use-platform-gate-DNfLk9Xd.js} +1 -1
- package/dist/assets/{use-reduced-motion-CU3dPXKf.js → use-reduced-motion-DzXyVFAi.js} +1 -1
- package/dist/assets/{use-return-to-short-circuit-EtY8cSC7.js → use-return-to-short-circuit-CY3AuCF9.js} +1 -1
- package/dist/assets/use-save-twilio-credentials-BWaLXE4J.js +1 -0
- package/dist/assets/use-side-list-room-CO7nxluQ.js +1 -0
- package/dist/assets/{use-skill-actions-CdbZjq6a.js → use-skill-actions-D7CK9Jhy.js} +1 -1
- package/dist/assets/{use-skill-detail-files-Bg4G44J3.js → use-skill-detail-files-Cop9LnVd.js} +1 -1
- package/dist/assets/use-sticky-profiles-D3ybBRfX.js +1 -0
- package/dist/assets/{use-stt-language-selection-CK6bUfVS.js → use-stt-language-selection-Dkm4Uq69.js} +1 -1
- package/dist/assets/{use-subagent-card-data-DlVOBxXw.js → use-subagent-card-data-DbKFX1Jc.js} +1 -1
- package/dist/assets/{use-supports-bookmarks-B4cgbKXV.js → use-supports-bookmarks-stTgDlyW.js} +1 -1
- package/dist/assets/use-supports-credentials-settings-DK8TsliJ.js +1 -0
- package/dist/assets/use-supports-inference-profiles-C0dU3VLS.js +1 -0
- package/dist/assets/use-swipe-horizontal-BwZ0yvoM.js +1 -0
- package/dist/assets/use-touch-mobile-CaIiM-us.js +1 -0
- package/dist/assets/use-transcript-message-by-id-BbJqGOYZ.js +1 -0
- package/dist/assets/use-transcript-messages-Bp4Jsfks.js +3 -0
- package/dist/assets/{use-voice-sample-preview-CZoWWEeH.js → use-voice-sample-preview-4vpwPGNW.js} +1 -1
- package/dist/assets/{useTranslation-D9pPv-bA.js → useTranslation-CCDbxnME.js} +1 -1
- package/dist/assets/{utils-BEkyAhbA.js → utils-wDLoxcBZ.js} +1 -1
- package/dist/assets/viewer-store-BbaMH35y.js +1 -0
- package/dist/assets/voice-page--99ik4mV.js +1 -0
- package/dist/assets/voice-providers-note-7m0LvxmN.js +1 -0
- package/dist/assets/{weather-forecast-display-D3IBgGHv.js → weather-forecast-display-BbD0N8C0.js} +1 -1
- package/dist/assets/{web-CxX3pST-.js → web-Do_X9zWq.js} +1 -1
- package/dist/assets/{web-D1mJSG8v.js → web-UN0kX9ic.js} +1 -1
- package/dist/assets/welcome-screen-Drdb1oS6.js +1 -0
- package/dist/assets/{workflow-detail-panel-C0kN-iH3.js → workflow-detail-panel-DS9_MRNg.js} +1 -1
- package/dist/assets/{workflow-store-BXqyb8CL.js → workflow-store-BYbfirJj.js} +1 -1
- package/dist/assets/workspace-page-CPDwYVlW.js +1 -0
- package/dist/assets/{workspace-tree-query-Dyls8wmV.js → workspace-tree-query-DzYz0-QE.js} +1 -1
- package/dist/index.html +284 -280
- package/package.json +1 -1
- package/dist/assets/access-D0krXly2.js +0 -1
- package/dist/assets/activity-steps-panel-C9z9FMmK.js +0 -1
- package/dist/assets/add-credits-modal-RIAYgbOT.js +0 -1
- package/dist/assets/ai-page-CI4LZXTY.js +0 -1
- package/dist/assets/api-BjYAXdCk.js +0 -1
- package/dist/assets/api-Cx3i50oG.js +0 -1
- package/dist/assets/api-key-screen-BKFAcyqU.js +0 -1
- package/dist/assets/auth-store-CVtcHK0b.js +0 -2
- package/dist/assets/auth-welcome-screen-Pw3qXxi5.js +0 -1
- package/dist/assets/billing-page-CmVjD4bw.js +0 -3
- package/dist/assets/bookmarks-page-DUbnEAgS.js +0 -1
- package/dist/assets/chat-1xy90pMn.js +0 -3
- package/dist/assets/chat-CHVUM3s0.js +0 -1
- package/dist/assets/chat-markdown-message-CtLdsT2K.js +0 -1
- package/dist/assets/checkout-continuation-BvY4Kjz7.js +0 -1
- package/dist/assets/checkout-page-CWRkiEj1.js +0 -1
- package/dist/assets/checkout-return-target-_Y86sfo0.js +0 -1
- package/dist/assets/common-EmSgsWNa.js +0 -1
- package/dist/assets/community-page-Dd84pjdI.js +0 -1
- package/dist/assets/companion-surface-page-BvDSOFVH.js +0 -1
- package/dist/assets/composer-settings-DBAb6W2i.js +0 -1
- package/dist/assets/conversation-cache-qk0nNm6Q.js +0 -1
- package/dist/assets/conversation-navigation-B_4jZ9Z2.js +0 -1
- package/dist/assets/conversation-queries-M4Inozp_.js +0 -1
- package/dist/assets/credentials-page-C-e4DqWt.js +0 -1
- package/dist/assets/debug-page-Be5Y5TVM.js +0 -4
- package/dist/assets/developer-page-DD8xa8mQ.js +0 -1
- package/dist/assets/dictation-overlay-page-DZiwww1V.js +0 -1
- package/dist/assets/dist-DMYOKN8y.js +0 -1
- package/dist/assets/document-viewer-page-tTTco75r.js +0 -1
- package/dist/assets/effective-timezone-CHJnU8kZ.js +0 -1
- package/dist/assets/esm-CtKndoc9.js +0 -2
- package/dist/assets/feature-flag-catalog-Cyqf6Ns7.js +0 -1
- package/dist/assets/feed-item-status-actions--CCeCtuw.js +0 -1
- package/dist/assets/format-usd-tespTIex.js +0 -1
- package/dist/assets/general-page-Bi87XguF.js +0 -1
- package/dist/assets/hatching-screen-DA0yyXD1.js +0 -1
- package/dist/assets/hosting-screen-cfhZ-ct7.js +0 -1
- package/dist/assets/identity-CqCxB9QW.js +0 -1
- package/dist/assets/identity-page-route-BjSsi8PM.js +0 -7
- package/dist/assets/index-BmDctEOW.css +0 -2
- package/dist/assets/index-I9kwAKzY.js +0 -11
- package/dist/assets/integrations-page-zrUmh2xn.js +0 -1
- package/dist/assets/intelligence-DXpXyKbw.js +0 -5
- package/dist/assets/keyboard-shortcuts-redirect-page-DSnux9sJ.js +0 -1
- package/dist/assets/library-CuKVNDEp.js +0 -1
- package/dist/assets/local-mode-BNr2MrWI.js +0 -39
- package/dist/assets/media-preview-HgLvcAQ9.js +0 -1
- package/dist/assets/memory-router-playground-page-Bnxf4hzQ.js +0 -1
- package/dist/assets/message-content-weXJNNKO.js +0 -1
- package/dist/assets/messages-CPTfRZA4.js +0 -13
- package/dist/assets/multi-activity-group-AECQlBbV.js +0 -1
- package/dist/assets/native-anchor-Bn22ZLay.js +0 -1
- package/dist/assets/native-biometric-D9IxNvJM.js +0 -6
- package/dist/assets/navigation-resolver-jIQ5B6JB.js +0 -1
- package/dist/assets/notifications-page-GRXZE_lL.js +0 -1
- package/dist/assets/onboarding-DK0I_g8T.js +0 -1
- package/dist/assets/onboarding-layout-GTzgLPSo.js +0 -1
- package/dist/assets/open-workspace-file-CYf_Tqw3.js +0 -2
- package/dist/assets/pdf-file-preview-udA0Apx_.js +0 -1
- package/dist/assets/pdf-preview-6Xfl1tO1.js +0 -2
- package/dist/assets/plans-page-DkVXE0Jv.js +0 -1
- package/dist/assets/plugins-surface-C4Cvus3n.js +0 -1
- package/dist/assets/pointer-BMK9brNn.js +0 -1
- package/dist/assets/popover-D3A6cIyW.js +0 -1
- package/dist/assets/privacy-page-BxJ2Cuev.js +0 -1
- package/dist/assets/privacy-screen-DlSj_9FT.js +0 -1
- package/dist/assets/profile-pickers-B0hfDNt-.js +0 -1
- package/dist/assets/react-query.gen-Bbh5MII3.js +0 -1
- package/dist/assets/react-query.gen-CwRPAiHT.js +0 -1
- package/dist/assets/remote-gateway-session-CzPLaXuT.js +0 -1
- package/dist/assets/remove-from-device-dialog-DeJ_gAmf.js +0 -1
- package/dist/assets/research-onboarding-route-BY3X_d2-.js +0 -50
- package/dist/assets/retire-confirm-dialog-f-A5OVYj.js +0 -1
- package/dist/assets/routes-B7wRw3UT.js +0 -1
- package/dist/assets/routes-OwGjl0BS.js +0 -24
- package/dist/assets/runtime-upgrade-banner-Cj9E7kWP.js +0 -2
- package/dist/assets/schedules-C3wE8OML.js +0 -1
- package/dist/assets/section-membership-vg-XaMPS.js +0 -1
- package/dist/assets/select-assistant-screen-BZxPQqe4.js +0 -1
- package/dist/assets/settings-CEQzAg2m.js +0 -1
- package/dist/assets/settings-layout-DgNBNUT7.js +0 -1
- package/dist/assets/settings-navigation-CVw10LL_.js +0 -1
- package/dist/assets/sound-manager-lHaiHTCh.js +0 -1
- package/dist/assets/sounds-page-BdSO1UIf.js +0 -1
- package/dist/assets/start-screen-CHO19RCi.js +0 -1
- package/dist/assets/upgrade-cancel-page-Dbd3VJdm.js +0 -1
- package/dist/assets/upgrade-success-page-CHbEmpjg.js +0 -1
- package/dist/assets/upload-DwkuEWSz.js +0 -1
- package/dist/assets/use-app-theme-Z0l8oiAF.js +0 -1
- package/dist/assets/use-assistant-avatar-rPqMHOma.js +0 -1
- package/dist/assets/use-bookmarks-Bl4tx8xK.js +0 -1
- package/dist/assets/use-checkout-dismiss-refresh-BHuxVDUc.js +0 -1
- package/dist/assets/use-edge-swipe-C4IrskOL.js +0 -1
- package/dist/assets/use-edge-swipe-back-CiO9raEw.js +0 -2
- package/dist/assets/use-edit-app-ByAfCYIL.js +0 -1
- package/dist/assets/use-is-mobile-q9Lr7beO.js +0 -1
- package/dist/assets/use-local-file-info-DxY8jZ8F.js +0 -1
- package/dist/assets/use-save-twilio-credentials-Bs9sThtb.js +0 -1
- package/dist/assets/use-side-list-room-CUXPQyjw.js +0 -1
- package/dist/assets/use-sticky-profiles-vQLFyEh0.js +0 -1
- package/dist/assets/use-supports-credentials-settings-Cj-Py42f.js +0 -1
- package/dist/assets/use-swipe-engine-b1fkDAV8.js +0 -1
- package/dist/assets/use-touch-mobile-CnqGLpCj.js +0 -1
- package/dist/assets/use-transcript-message-by-id-FmIIrRsf.js +0 -1
- package/dist/assets/use-transcript-messages-Q1PBxvSF.js +0 -3
- package/dist/assets/viewer-store-CwlLnf-k.js +0 -1
- package/dist/assets/voice-page-B1mJ2hkc.js +0 -1
- package/dist/assets/voice-providers-note-TDQxSwUj.js +0 -1
- package/dist/assets/welcome-screen-DPXQU47t.js +0 -1
- package/dist/assets/workspace-page-Mj_A1eeR.js +0 -1
- /package/dist/assets/{account-DEWe1CJv.js → account-BuiU7DuB.js} +0 -0
- /package/dist/assets/{android-consumption-only-4ku7vpy4.js → android-consumption-only-DDbN5hxd.js} +0 -0
- /package/dist/assets/{app-types-DET4dder.js → app-types-Dslgu6TG.js} +0 -0
- /package/dist/assets/{apple-logo-C_J-Nv61.js → apple-logo-DE1DXFS4.js} +0 -0
- /package/dist/assets/{assistant-identity-store-DhAqaifK.js → assistant-identity-store-DrQJhZh3.js} +0 -0
- /package/dist/assets/{avatar-bundled-components-C8vOxkFj.js → avatar-bundled-components-CAE0CJ9e.js} +0 -0
- /package/dist/assets/{avatar-subagent-BnaYyPQQ.js → avatar-subagent-pDrk_xWL.js} +0 -0
- /package/dist/assets/{avatar-svg-compositor-e_lhkR9P.js → avatar-svg-compositor-tf4h3-SV.js} +0 -0
- /package/dist/assets/{avatar-tone-BVUtTeGn.js → avatar-tone-Dp4coAkE.js} +0 -0
- /package/dist/assets/{browser-timezone-BOrwtFs2.js → browser-timezone-DYYSCLn2.js} +0 -0
- /package/dist/assets/{build.umd-CwkQd6wk.js → build.umd-CpV9Yjhm.js} +0 -0
- /package/dist/assets/{by-tool-use-id-index-C1T3QA5-.js → by-tool-use-id-index-BP1pAJzI.js} +0 -0
- /package/dist/assets/{calendar-5ZUL5438.js → calendar-DUfSq9XY.js} +0 -0
- /package/dist/assets/{channels-CXuBInAc.js → channels-DFBLDFWh.js} +0 -0
- /package/dist/assets/{chart-column-Bd2tG_o1.js → chart-column-nt6xAz18.js} +0 -0
- /package/dist/assets/{chat-layout-slots-store-CE2p0OE9.js → chat-layout-slots-store-c4ig5vXx.js} +0 -0
- /package/dist/assets/{check-pgeLaeXx.js → check-NGUguBHp.js} +0 -0
- /package/dist/assets/{chevron-down-CmQCCo_x.js → chevron-down-D1ho6wFA.js} +0 -0
- /package/dist/assets/{chevron-left-02Er54z-.js → chevron-left-D29BeQ4x.js} +0 -0
- /package/dist/assets/{chevron-right-Dwr_Sx98.js → chevron-right-DTpkwA4e.js} +0 -0
- /package/dist/assets/{chevron-up-DHhqG14M.js → chevron-up-bJ8SGTC_.js} +0 -0
- /package/dist/assets/{circle-alert-DvkPmyIg.js → circle-alert-B-Zu9T9V.js} +0 -0
- /package/dist/assets/{circle-check-BlOeCme9.js → circle-check-BQyrCkaB.js} +0 -0
- /package/dist/assets/{circle-check-big-BDMPSnMn.js → circle-check-big-C9sLhbGa.js} +0 -0
- /package/dist/assets/{circle-minus-B5yKBO54.js → circle-minus-DgUiTTwX.js} +0 -0
- /package/dist/assets/{circle-x-CEXUbdoO.js → circle-x-qsWcnNwx.js} +0 -0
- /package/dist/assets/{client.gen-CxTOBLiH.js → client.gen-C1nf2AIs.js} +0 -0
- /package/dist/assets/{clipboard-copy-CEczonMF.js → clipboard-copy-D6VpELQ4.js} +0 -0
- /package/dist/assets/{clock-1REtpnlM.js → clock-CNSYP9nm.js} +0 -0
- /package/dist/assets/{cloud-dqL-JBKK.js → cloud-ByHaCF-x.js} +0 -0
- /package/dist/assets/{cloud-off-CB9uhEDu.js → cloud-off-DioliYf9.js} +0 -0
- /package/dist/assets/{code-u4Wi5zSA.js → code-B7TA1KYq.js} +0 -0
- /package/dist/assets/{coins-CveNnhLe.js → coins-WH-N-3B8.js} +0 -0
- /package/dist/assets/{consent-mbj_kMXO.js → consent-DgQeejGe.js} +0 -0
- /package/dist/assets/{contacts-BRU7ohw2.js → contacts-BQcl-1XL.js} +0 -0
- /package/dist/assets/{conversation-store-DKBwV4bc.js → conversation-store-DdBAApt6.js} +0 -0
- /package/dist/assets/{cpu-BG0rQrMj.js → cpu-CNmn352B.js} +0 -0
- /package/dist/assets/{credential-requests-BbBZKJHx.js → credential-requests-CpHxMIMS.js} +0 -0
- /package/dist/assets/{definitions-Co0yLSy_.js → definitions-BRiVhEtI.js} +0 -0
- /package/dist/assets/{definitions-Yz8Uao4u.js → definitions-I6-Jh5-j.js} +0 -0
- /package/dist/assets/{diff-rows-BrFK496i.js → diff-rows-BVvdLrrS.js} +0 -0
- /package/dist/assets/{download-DnnvWjPo.js → download-C7_XK23s.js} +0 -0
- /package/dist/assets/{edge-swipe-arbiter-store-BGBvaPTd.js → edge-swipe-arbiter-store-Cgt2wsOY.js} +0 -0
- /package/dist/assets/{edit-chat-session-CiXnUJPh.js → edit-chat-session-BUx2LvCf.js} +0 -0
- /package/dist/assets/{ellipsis-4L6z7PhT.js → ellipsis-DLgXzWgN.js} +0 -0
- /package/dist/assets/{ellipsis-vertical-CJX4FZlb.js → ellipsis-vertical-D3SJdQ4P.js} +0 -0
- /package/dist/assets/{emoji-catalog-data-BIIBfSqk.js → emoji-catalog-data-DXFYOvKt.js} +0 -0
- /package/dist/assets/{environment-store-C4So_j-o.js → environment-store-rZ0hkMHt.js} +0 -0
- /package/dist/assets/{esm-CPFvOH-c.js → esm-Cz8_Dotd.js} +0 -0
- /package/dist/assets/{esm-BJhqsukI.js → esm-DBGqhIh5.js} +0 -0
- /package/dist/assets/{event-bus-B-wwSVzo.js → event-bus-QJe_MFOc.js} +0 -0
- /package/dist/assets/{external-link-B-pfCiUo.js → external-link-DCA91uI6.js} +0 -0
- /package/dist/assets/{external-urls-Bg18AU4S.js → external-urls-DWYQKJEq.js} +0 -0
- /package/dist/assets/{eye-CHlTF_ct.js → eye-C5DUd2Vd.js} +0 -0
- /package/dist/assets/{eye-off-0lRvXR9p.js → eye-off-8cYeidA6.js} +0 -0
- /package/dist/assets/{file-DVQXh8CW.js → file-BgKbUJNS.js} +0 -0
- /package/dist/assets/{file-code-A080HCxh.js → file-code-CS8NbZbG.js} +0 -0
- /package/dist/assets/{file-plus-C_Iw4p49.js → file-plus-DLtgfqcS.js} +0 -0
- /package/dist/assets/{file-text-DpdlyCly.js → file-text-BEpL7wIA.js} +0 -0
- /package/dist/assets/{folder-B0UQA6jd.js → folder-6DGJLMuE.js} +0 -0
- /package/dist/assets/{folder-open-BU6EPS8G.js → folder-open-Cz-3FN-E.js} +0 -0
- /package/dist/assets/{format-date-B_oQDqU9.js → format-date-DEIFj6w3.js} +0 -0
- /package/dist/assets/{format-file-size-ByNX0dQR.js → format-file-size-CaQu4Lyo.js} +0 -0
- /package/dist/assets/{globe-COrlg99x.js → globe-BJuNFSn-.js} +0 -0
- /package/dist/assets/{hard-drive-BV9-fN_J.js → hard-drive-zWkzTs9d.js} +0 -0
- /package/dist/assets/{hard-navigate-CNxvVrtC.js → hard-navigate-D1rxKLPg.js} +0 -0
- /package/dist/assets/{heart-Bd-pnn1X.js → heart-DBsRPrRH.js} +0 -0
- /package/dist/assets/{home-BwSxL4rM.js → home-ySv5rBLy.js} +0 -0
- /package/dist/assets/{image-DsrjUDQh.js → image-DntHMHHo.js} +0 -0
- /package/dist/assets/{inbox-BcZU66Rf.js → inbox-Qye1DBie.js} +0 -0
- /package/dist/assets/{info-Bn2hbIVl.js → info-D0qquAkS.js} +0 -0
- /package/dist/assets/{interactive-target-CXv5tgJB.js → interactive-target-DT1VQruY.js} +0 -0
- /package/dist/assets/{is-electron-wgAC5Mzb.js → is-electron-C9-jl_HE.js} +0 -0
- /package/dist/assets/{key-round-C51ZTEMu.js → key-round-DcfNNfNG.js} +0 -0
- /package/dist/assets/{laptop-DoAUvmjX.js → laptop-C9BtnRjX.js} +0 -0
- /package/dist/assets/{layout-grid-lHmG2izK.js → layout-grid-CBeP_IMO.js} +0 -0
- /package/dist/assets/{lightbulb-moe9FubK.js → lightbulb-DIV0FA-e.js} +0 -0
- /package/dist/assets/{link-2-BBS4SmE3.js → link-2-CTrfUFQw.js} +0 -0
- /package/dist/assets/{link-V2w-GAhr.js → link-Dpgek1RH.js} +0 -0
- /package/dist/assets/{link-click-BsxbQxDe.js → link-click-DxspyBl6.js} +0 -0
- /package/dist/assets/{list-6yken9qv.js → list-Dn1NSBlc.js} +0 -0
- /package/dist/assets/{loader-circle-DYe85z3g.js → loader-circle-C9QjVTuc.js} +0 -0
- /package/dist/assets/{log-in-BsEhSW6v.js → log-in-DQ2oMzUv.js} +0 -0
- /package/dist/assets/{log-out-Dvz6dWwJ.js → log-out-nq6T7R9r.js} +0 -0
- /package/dist/assets/{logs-Blq4k473.js → logs-BsCB67bq.js} +0 -0
- /package/dist/assets/{machine-sizes-DzJ0TVYS.js → machine-sizes-Wnvi4rGR.js} +0 -0
- /package/dist/assets/{mail-9qQtaWSe.js → mail-BFnJM9hP.js} +0 -0
- /package/dist/assets/{message-circle-CQpMnPIR.js → message-circle-Cbwq_S7o.js} +0 -0
- /package/dist/assets/{message-square-ameAY_Gq.js → message-square-CENNR7tf.js} +0 -0
- /package/dist/assets/{message-square-text-C0iNfHuJ.js → message-square-text-Cnv84xQi.js} +0 -0
- /package/dist/assets/{mic-yJxjqdDR.js → mic-W9IfxqWv.js} +0 -0
- /package/dist/assets/{minimize-2-dhLse52Y.js → minimize-2-CcBLJXor.js} +0 -0
- /package/dist/assets/{misc-B24X-saO.js → misc-giJA2hbh.js} +0 -0
- /package/dist/assets/{monitor-BHYV5XBf.js → monitor-C7Po319a.js} +0 -0
- /package/dist/assets/{moon-CZZGDGLY.js → moon-D2HTb8zV.js} +0 -0
- /package/dist/assets/{oauth-connection-utils-19Tfw-lp.js → oauth-connection-utils-dPIUOXze.js} +0 -0
- /package/dist/assets/{oauth-popup-CrXEFWPi.js → oauth-popup-DIeDxfkO.js} +0 -0
- /package/dist/assets/{onboarding-navigation-C-Kk3_ll.js → onboarding-navigation-CUL0t0Am.js} +0 -0
- /package/dist/assets/{onboarding-step-layout-2G2ptxpI.js → onboarding-step-layout-00YhfBar.js} +0 -0
- /package/dist/assets/{optimistic-lifecycle-D1yMW3VK.js → optimistic-lifecycle-gXn1rGfw.js} +0 -0
- /package/dist/assets/{page-empty-state-CzHxZkBR.js → page-empty-state-CpkB0rZ_.js} +0 -0
- /package/dist/assets/{page-surface-store-DJLLsNFC.js → page-surface-store-BvbPgWRr.js} +0 -0
- /package/dist/assets/{paperclip-T-MRlqdF.js → paperclip-CF2Q8ys8.js} +0 -0
- /package/dist/assets/{pdf-UON6A_nT.js → pdf-BdZA1URW.js} +0 -0
- /package/dist/assets/{pencil-Ba0D7tjH.js → pencil-RFB2IyLT.js} +0 -0
- /package/dist/assets/{play-dZ2h3AT7.js → play-DTmq7Qfg.js} +0 -0
- /package/dist/assets/{plug-sTs_y01k.js → plug-CVzxWCFR.js} +0 -0
- /package/dist/assets/{plugin-attribution-C0u-eDRH.js → plugin-attribution-rEWhA-PP.js} +0 -0
- /package/dist/assets/{plus-CWkbiq1y.js → plus-BDSluxb4.js} +0 -0
- /package/dist/assets/{prechat-CHD2UKHx.js → prechat-CGdKFXs3.js} +0 -0
- /package/dist/assets/{preview-skeleton-Be9eHMn9.js → preview-skeleton-BStSegQN.js} +0 -0
- /package/dist/assets/{profile-metadata-D9zzZn4_.js → profile-metadata-B1fA1_W5.js} +0 -0
- /package/dist/assets/{public-asset-CNgVJ7i4.js → public-asset-Du947SLt.js} +0 -0
- /package/dist/assets/{puzzle-DHy-ePUL.js → puzzle-C5CgkzuA.js} +0 -0
- /package/dist/assets/{radio-card-nav-CrM7VJUk.js → radio-card-nav-hVd-im6E.js} +0 -0
- /package/dist/assets/{reduced-motion-D8oweJF_.js → reduced-motion-Cste44pe.js} +0 -0
- /package/dist/assets/{refresh-cw-p138DTtp.js → refresh-cw-DwfKxRXV.js} +0 -0
- /package/dist/assets/{remote-web-DBCYTF2P.js → remote-web-BX-aNmAz.js} +0 -0
- /package/dist/assets/{repeat-BL0WDPMw.js → repeat-ORyt0N0E.js} +0 -0
- /package/dist/assets/{rotate-ccw-Cs7aCSL9.js → rotate-ccw-Cc2yZNdm.js} +0 -0
- /package/dist/assets/{schedules-Co4-ymK5.js → schedules-BXXSRQs5.js} +0 -0
- /package/dist/assets/{sdk.gen-CoXhzo__.js → sdk.gen-bruWelSm.js} +0 -0
- /package/dist/assets/{search-D_t5oHhF.js → search-FGnzWjRX.js} +0 -0
- /package/dist/assets/{semver-C2-EZfiR.js → semver-D1eVfLWz.js} +0 -0
- /package/dist/assets/{send-Dwk9mFMC.js → send-CnqSHaqf.js} +0 -0
- /package/dist/assets/{setting-row-BvQpFvtr.js → setting-row-CqyX0EBz.js} +0 -0
- /package/dist/assets/{settings-B-74NxzZ.js → settings-CyYRtP_K.js} +0 -0
- /package/dist/assets/{shield-Sw65VSPa.js → shield-CKMzW_Un.js} +0 -0
- /package/dist/assets/{shield-check-B-3lr0Uj.js → shield-check-B5eUPC8R.js} +0 -0
- /package/dist/assets/{shim-CcP58yVZ.js → shim-BE9ID8Pw.js} +0 -0
- /package/dist/assets/{skill-icon-yVnZg-J1.js → skill-icon-CSLUbHBD.js} +0 -0
- /package/dist/assets/{sliders-horizontal-CQIT2VGH.js → sliders-horizontal-GQpDB0wo.js} +0 -0
- /package/dist/assets/{smartphone-AcA2Q0mQ.js → smartphone-CWnipfJ7.js} +0 -0
- /package/dist/assets/{sparkles-Bhr0JiLM.js → sparkles-DvB22tVW.js} +0 -0
- /package/dist/assets/{square-rBIWdRdF.js → square-CLyLyc89.js} +0 -0
- /package/dist/assets/{sun-BzqYfTxT.js → sun-sLCgv7zn.js} +0 -0
- /package/dist/assets/{surface-parse-helpers-X2hFvbHP.js → surface-parse-helpers-DrfM4_wl.js} +0 -0
- /package/dist/assets/{terminal-CttH6-2_.js → terminal-CIR8bWcg.js} +0 -0
- /package/dist/assets/{terminal-_tzbWcM4.js → terminal-Dily8RM4.js} +0 -0
- /package/dist/assets/{three-dot-indicator-CYYJ1RDJ.js → three-dot-indicator-BUucQBI1.js} +0 -0
- /package/dist/assets/{trash-2-V2WT_DbX.js → trash-2-DnajdgJS.js} +0 -0
- /package/dist/assets/{triangle-alert-43gIbLca.js → triangle-alert-B-18Pims.js} +0 -0
- /package/dist/assets/{use-body-scroll-lock-DmT5-Tka.js → use-body-scroll-lock-CMCNMYPC.js} +0 -0
- /package/dist/assets/{use-discord-nudge-C5OzjNEk.js → use-discord-nudge-B-qg81ow.js} +0 -0
- /package/dist/assets/{use-element-size-B_jzGsxt.js → use-element-size-Cgo4THI9.js} +0 -0
- /package/dist/assets/{use-media-query-oO6k9fDB.js → use-media-query-DSngkas0.js} +0 -0
- /package/dist/assets/{use-truncated-blob-text-BYAPiP8I.js → use-truncated-blob-text-DYvFk3Fv.js} +0 -0
- /package/dist/assets/{web-Cpz2h_dP.js → web-0-rqi4je.js} +0 -0
- /package/dist/assets/{web-CXad-fWd.js → web-8fcyoNsL.js} +0 -0
- /package/dist/assets/{web-B60tNeyj.js → web-DCamMnI1.js} +0 -0
- /package/dist/assets/{web-Nd-L7NoL.js → web-DIlEhBsT.js} +0 -0
- /package/dist/assets/{web-W2HEHjFb.js → web-DsVO-tkH.js} +0 -0
- /package/dist/assets/{web-Cr238HhI.js → web-aW1scjmM.js} +0 -0
- /package/dist/assets/{web-BSizndvP.js → web-eVpCzMlE.js} +0 -0
- /package/dist/assets/{workflow-status-CGIYm2p7.js → workflow-status-notSUy4k.js} +0 -0
- /package/dist/assets/{workspace-BFa6JWKe.js → workspace-Ch5zHBn1.js} +0 -0
- /package/dist/assets/{workspace-path-links-CWERAV56.js → workspace-path-links-BVdQi6RQ.js} +0 -0
- /package/dist/assets/{workspace-theme-tokens-CJpxBUQ3.js → workspace-theme-tokens-Dae42Dzg.js} +0 -0
- /package/dist/assets/{xterm-DFQikp5h.js → xterm-Ds08b1dp.js} +0 -0
- /package/dist/assets/{xterm-addon-fit-B04vX_IV.js → xterm-addon-fit-DAq2qzya.js} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{o as e,r as t}from"./device-settings-DZvv4pnY.js";import{t as n}from"./capture-error-DiNp24s6.js";import{t as r}from"./preload-helper-Cv2QeVDK.js";var i=e=>typeof e==`string`,a=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},o=e=>e==null?``:String(e),s=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},c=/###/g,l=e=>e&&e.includes(`###`)?e.replace(c,`.`):e,u=e=>!e||i(e),d=(e,t,n)=>{let r=i(t)?t.split(`.`):t,a=0;for(;a<r.length-1;){if(u(e))return{};let t=l(r[a]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++a}return u(e)?{}:{obj:e,k:l(r[a])}},f=(e,t,n)=>{let{obj:r,k:i}=d(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=d(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=d(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},p=(e,t,n,r)=>{let{obj:i,k:a}=d(e,t,Object);i[a]=i[a]||[],i[a].push(n)},m=(e,t)=>{let{obj:n,k:r}=d(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},h=(e,t,n)=>{let r=m(e,n);return r===void 0?m(t,n):r},g=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(Object.prototype.hasOwnProperty.call(e,r)?i(e[r])||e[r]instanceof String||i(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):g(e[r],t[r],n):e[r]=t[r]);return e},_=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),v={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`,"/":`/`},y=e=>i(e)?e.replace(/[&<>"'\/]/g,e=>v[e]):e,b=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},x=[` `,`,`,`?`,`!`,`;`],S=new b(20),ee=(e,t,n)=>{t||=``,n||=``;let r=x.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=S.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},C=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},w=e=>e?.replace(/_/g,`-`),T={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},E=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||T,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>i(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),i(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},D=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},O=class extends D{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let a=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,o=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,s;e.includes(`.`)?s=e.split(`.`):(s=[e,t],n&&(Array.isArray(n)?s.push(...n):i(n)&&a?s.push(...n.split(a)):s.push(n)));let c=m(this.data,s);return!c&&!t&&!n&&e.includes(`.`)&&(e=s[0],t=s[1],n=s.slice(2).join(`.`)),c||!o||!i(n)?c:C(this.data?.[e]?.[t],n,a)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),f(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(i(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=m(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?g(s,n,i):s={...s,...n},f(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},te={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},ne=Symbol(`i18next/PATH_KEY`);function re(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===ne?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function k(e,t){let{[ne]:n}=e(re()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var A=e=>!i(e)&&typeof e!=`boolean`&&typeof e!=`number`,ie=class e extends D{constructor(e,t={}){super(),s([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=E.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=A(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,a=t.ns||this.options.defaultNS||[],o=n&&e.includes(n),s=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!ee(e,n,r);if(o&&!s){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:i(a)?[a]:a};let o=e.split(n);(n!==r||n===r&&this.options.ns.includes(o[0]))&&(a=o.shift()),e=o.join(r)}return{key:e,namespaces:i(a)?[a]:a}}translate(t,n,r){let a=typeof n==`object`?{...n}:n;if(typeof a!=`object`&&this.options.overloadTranslationOptionHandler&&(a=this.options.overloadTranslationOptionHandler(arguments)),typeof a==`object`&&(a={...a}),a||={},t==null)return``;typeof t==`function`&&(t=k(t,{...this.options,...a})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?k(e,{...this.options,...a}):String(e));let o=a.returnDetails===void 0?this.options.returnDetails:a.returnDetails,s=a.keySeparator===void 0?this.options.keySeparator:a.keySeparator,{key:c,namespaces:l}=this.extractFromKey(t[t.length-1],a),u=l[l.length-1],d=a.nsSeparator===void 0?this.options.nsSeparator:a.nsSeparator;d===void 0&&(d=`:`);let f=a.lng||this.language,p=a.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()===`cimode`)return p?o?{res:`${u}${d}${c}`,usedKey:c,exactUsedKey:c,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(a)}:`${u}${d}${c}`:o?{res:c,usedKey:c,exactUsedKey:c,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(a)}:c;let m=this.resolve(t,a),h=m?.res,g=m?.usedKey||c,_=m?.exactUsedKey||c,v=[`[object Number]`,`[object Function]`,`[object RegExp]`],y=a.joinArrays===void 0?this.options.joinArrays:a.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,x=a.count!==void 0&&!i(a.count),S=e.hasDefaultValue(a),ee=x?this.pluralResolver.getSuffix(f,a.count,a):``,C=a.ordinal&&x?this.pluralResolver.getSuffix(f,a.count,{ordinal:!1}):``,w=x&&!a.ordinal&&a.count===0,T=w&&a[`defaultValue${this.options.pluralSeparator}zero`]||a[`defaultValue${ee}`]||a[`defaultValue${C}`]||a.defaultValue,E=h;b&&!h&&S&&(E=T);let D=A(E),O=Object.prototype.toString.apply(E);if(b&&E&&D&&!v.includes(O)&&!(i(y)&&Array.isArray(E))){if(!a.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,E,{...a,ns:l}):`key '${c} (${this.language})' returned an object instead of string.`;return o?(m.res=e,m.usedParams=this.getUsedParamsDetails(a),m):e}if(s){let e=Array.isArray(E),t=e?[]:{},n=e?_:g;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${s}${e}`;S&&!h?t[e]=this.translate(r,{...a,defaultValue:A(T)?T[e]:void 0,joinArrays:!1,ns:l}):t[e]=this.translate(r,{...a,joinArrays:!1,ns:l}),t[e]===r&&(t[e]=E[e])}h=t}}else if(b&&i(y)&&Array.isArray(h))h=h.join(y),h&&=this.extendTranslation(h,t,a,r);else{let e=!1,n=!1;!this.isValidLookup(h)&&S&&(e=!0,h=T),this.isValidLookup(h)||(n=!0,h=c);let i=(a.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:h,o=S&&T!==h&&this.options.updateMissing;if(n||e||o){if(this.logger.log(o?`updateKey`:`missingKey`,f,u,x&&!o?`${c}${this.pluralResolver.getSuffix(f,a.count,a)}`:c,o?T:h),s){let e=this.resolve(c,{...a,keySeparator:!1});e&&e.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 e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,a.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(a.lng||this.language):e.push(a.lng||this.language);let n=(e,t,n)=>{let r=S&&n!==h?n:i;this.options.missingKeyHandler?this.options.missingKeyHandler(e,u,t,r,o,a):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,u,t,r,o,a),this.emit(`missingKey`,e,u,t,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&x?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,a);w&&a[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],c+t,a[`defaultValue${t}`]||T)})}):n(e,c,T))}h=this.extendTranslation(h,t,a,m,r),n&&h===c&&this.options.appendNamespaceToMissingKey&&(h=`${u}${d}${c}`),(n||e)&&this.options.parseMissingKeyHandler&&(h=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${u}${d}${c}`:c,e?h:void 0,a))}return o?(m.res=h,m.usedParams=this.getUsedParamsDetails(a),m):h}extendTranslation(e,t,n,r,a){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let o=i(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),s;if(o){let t=e.match(this.interpolator.nestingRegexp);s=t&&t.length}let c=n.replace&&!i(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(c={...this.options.interpolation.defaultVariables,...c}),e=this.interpolator.interpolate(e,c,n.lng||this.language||r.usedLng,n),o){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;s<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>a?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let o=n.postProcess||this.options.postProcess,s=i(o)?[o]:o;return e!=null&&s?.length&&n.applyPostProcessor!==!1&&(e=te.handle(s,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,a,o,s;return i(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?k(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let c=this.extractFromKey(e,t),l=c.key;r=l;let u=c.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));let d=t.count!==void 0&&!i(t.count),f=d&&!t.ordinal&&t.count===0,p=t.context!==void 0&&(i(t.context)||typeof t.context==`number`)&&t.context!==``,m=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);u.forEach(e=>{this.isValidLookup(n)||(s=e,!this.checkedLoadedFor[`${m[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(s)&&(this.checkedLoadedFor[`${m[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${m.join(`, `)}" won't get resolved as namespace "${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!!!`)),m.forEach(r=>{if(this.isValidLookup(n))return;o=r;let i=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(i,l,r,e,t);else{let e;d&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,a=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(d&&(t.ordinal&&e.startsWith(a)&&i.push(l+e.replace(a,this.options.pluralSeparator)),i.push(l+e),f&&i.push(l+n)),p){let r=`${l}${this.options.contextSeparator||`_`}${t.context}`;i.push(r),d&&(t.ordinal&&e.startsWith(a)&&i.push(r+e.replace(a,this.options.pluralSeparator)),i.push(r+e),f&&i.push(r+n))}}let s;for(;s=i.pop();)this.isValidLookup(n)||(a=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:a,usedLng:o,usedNS:s}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!i(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r={...r,count:e.count}),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},ae=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=E.create(`languageUtils`)}getScriptPartFromCode(e){if(e=w(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=w(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(i(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),i(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],a=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return i(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&a(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&a(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&a(this.getLanguagePartFromCode(e))):i(e)&&a(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||a(this.formatLanguageCode(e))}),r}},oe={zero:0,one:1,two:2,few:3,many:4,other:5},j={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},se=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=E.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=w(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),j;if(!e.match(/-|_/))return j;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>oe[e]-oe[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},M=(e,t,n,r=`.`,a=!0)=>{let o=h(e,t,n);return!o&&a&&i(n)&&(o=C(e,n,r),o===void 0&&(o=C(t,n,r))),o},ce=e=>e.replace(/\$/g,`$$$$`),le=class{constructor(e={}){this.logger=E.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:v}=e.interpolation;this.escape=t===void 0?y:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?_(i):a||`{{`,this.suffix=o?_(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?_(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?_(l):``,this.nestingPrefix=d?_(d):f||_(`$t(`),this.nestingSuffix=p?_(p):m||_(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=v===void 0?!1:v,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let a,s,c,l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=e=>{if(!e.includes(this.formatSeparator)){let i=M(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(M(t,l,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — 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 d=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,f=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>e},{regex:this.regexp,safeValue:e=>this.escapeValue?this.escape(e):e}].forEach(t=>{for(c=0;a=t.regex.exec(e);){let n=a[1].trim();if(s=u(n),s===void 0)if(typeof d==`function`){let t=d(e,a,r);s=i(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))s=``;else if(f){s=a[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),s=``;else !i(s)&&!this.useRawValueToEscape&&(s=o(s));let l=t.safeValue(s);if(e=e.replace(a[0],ce(l)),f?(t.regex.lastIndex+=l.length,t.regex.lastIndex-=a[0].length):t.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,a,s,c=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${_(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,s);let a=i.match(/'/g),o=i.match(/"/g);((a?.length??0)%2==0&&!o||(o?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{s=JSON.parse(i),t&&(s={...t,...s})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return s.defaultValue&&s.defaultValue.includes(this.prefix)&&delete s.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let l=[];s={...n},s=s.replace&&!i(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;let u=/{.*}/s.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(u!==-1&&(l=r[1].slice(u).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,u)),a=t(c.call(this,r[1].trim(),s),s),a&&r[0]===e&&!i(a))return a;i(a)||(a=o(a)),a||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),l.length&&(a=l.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),a.trim())),e=e.replace(r[0],a),this.regexp.lastIndex=0}return e}},ue=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},de=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(w(r),i),t[o]=s),s(n)}},fe=e=>(t,n,r)=>e(w(n),r)(t),pe=class{constructor(e={}){this.logger=E.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?de:fe;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=de(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator),a=[];for(let e=0;e<i.length;e++){let t=i[e];for(;t.indexOf(`(`)>-1&&!t.includes(`)`)&&e+1<i.length;)t=`${t}${this.formatSeparator}${i[++e]}`;a.push(t)}return a.reduce((e,t)=>{let{formatName:i,formatOptions:a}=ue(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},me=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},he=class extends D{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=E.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{p(n.loaded,[i],a),me(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();i(e)&&(e=this.languageUtils.toResolveHierarchy(e)),i(t)&&(t=[t]);let a=this.queueLoad(e,t,n,r);if(!a.toLoad.length)return a.pending.length||r(),null;a.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" 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(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},N=()=>({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]),i(e[1])&&(t.defaultValue=e[1]),i(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),ge=e=>(i(e.ns)&&(e.ns=[e.ns]),i(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),i(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),P=()=>{},_e=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},F=class e extends D{constructor(e={},t){if(super(),this.options=ge(e),this.services={},this.logger=E,this.modules={external:[]},_e(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(i(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=N();this.options={...n,...this.options,...ge(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?E.init(r(this.modules.logger),this.options):E.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:pe;let t=new ae(this.options);this.store=new O(this.options.resources,this.options);let n=this.services;n.logger=E,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new se(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new le(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new he(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new ie(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=P,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[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(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let o=a(),s=()=>{let e=(e,n)=>{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),o.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?s():setTimeout(s,0),o}loadResources(e,t=P){let n=t,r=i(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=a();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=P,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&te.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=a();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},o=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},s=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=i(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(i(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{o(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(e),n}getFixedT(e,t,n,r){let a=r?.scopeNs,o=(e,t,...r)=>{let i;i=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),i.lng=i.lng||o.lng,i.lngs=i.lngs||o.lngs;let s=i.ns!==void 0&&i.ns!==null;i.ns=i.ns||o.ns,i.keyPrefix!==``&&(i.keyPrefix=i.keyPrefix||n||o.keyPrefix);let c={...this.options,...i};Array.isArray(a)&&!s&&(c.ns=a),typeof i.keyPrefix==`function`&&(i.keyPrefix=k(i.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return i.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=k(e,c)),`${i.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=k(e,c)),u=i.keyPrefix?`${i.keyPrefix}${l}${e}`:e),this.t(u,i)};return i(e)?o.lng=e:o.lngs=e,o.ns=t,o.keyPrefix=n,o}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){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 n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=a();return this.options.ns?(i(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=a();i(e)&&(e=[e]);let r=this.options.preload||[],o=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return o.length?(this.options.preload=r.concat(o),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`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`.split(`.`),n=this.services?.languageUtils||new ae(N());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=P){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new O(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...N().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new le(n)}return a.translator=new ie(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();F.createInstance,F.dir,F.init,F.loadResources,F.reloadResources,F.use,F.changeLanguage,F.getFixedT;var ve=F.t;F.exists,F.setDefaultNamespace,F.hasLoadedNamespace,F.loadNamespaces,F.loadLanguages;var ye=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,be={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},xe=e=>be[e],Se=e=>e.replace(ye,xe),I={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:Se,transDefaultProps:void 0},Ce=(e={})=>{I={...I,...e}},we=()=>I,Te,Ee=e=>{Te=e},De=()=>Te,Oe={type:`3rdParty`,init(e){Ce(e.options.react),Ee(e)}},L=[`__proto__`,`constructor`,`prototype`];function ke(e,t,n){function r(e){return e&&e.indexOf(`###`)>-1?e.replace(/###/g,`.`):e}function i(){return!e||typeof e==`string`}for(var a=typeof t==`string`?t.split(`.`):[].concat(t);a.length>1;){if(i())return{};var o=r(a.shift());if(L.indexOf(o)>-1)return{};!e[o]&&n&&(e[o]=new n),e=e[o]}if(i())return{};var s=r(a.shift());return L.indexOf(s)>-1?{}:{obj:e,k:s}}function Ae(e,t,n){var r=ke(e,t,Object),i=r.obj,a=r.k;i!==void 0&&(i[a]=n)}function je(e,t){var n=ke(e,t),r=n.obj,i=n.k;if(r)return r[i]}var Me=[],Ne=Me.forEach,Pe=Me.slice;function Fe(e){return Ne.call(Pe.call(arguments,1),function(t){if(t)for(var n=0,r=Object.keys(t);n<r.length;n++){var i=r[n];L.indexOf(i)>-1||e[i]===void 0&&(e[i]=t[i])}}),e}function R(e,t){let n=t&&t.cache?t.cache:Ue,r=t&&t.serializer?t.serializer:Ve;return(t&&t.strategy?t.strategy:Re)(e,{cache:n,serializer:r})}function Ie(e){return e==null||typeof e==`number`||typeof e==`boolean`}function Le(e,t,n,r){let i=Ie(r)?r:n(r),a=t.get(i);return a===void 0&&(a=e.call(this,r),t.set(i,a)),a}function z(e,t,n){let r=Array.prototype.slice.call(arguments,3),i=n(r),a=t.get(i);return a===void 0&&(a=e.apply(this,r),t.set(i,a)),a}function B(e,t,n,r,i){return n.bind(t,e,r,i)}function Re(e,t){let n=e.length===1?Le:z;return B(e,this,n,t.cache.create(),t.serializer)}function ze(e,t){return B(e,this,z,t.cache.create(),t.serializer)}function Be(e,t){return B(e,this,Le,t.cache.create(),t.serializer)}var Ve=function(){return JSON.stringify(arguments)},He=class{constructor(){this.cache=Object.create(null)}get(e){return this.cache[e]}set(e,t){this.cache[e]=t}},Ue={create:function(){return new He}},V={variadic:ze,monadic:Be},We=/(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;function Ge(e){let t={};return e.replace(We,e=>{let n=e.length;switch(e[0]){case`G`:t.era=n===4?`long`:n===5?`narrow`:`short`;break;case`y`:t.year=n===2?`2-digit`:`numeric`;break;case`Y`:case`u`:case`U`:case`r`:throw RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");case`q`:case`Q`:throw RangeError("`q/Q` (quarter) patterns are not supported");case`M`:case`L`:t.month=[`numeric`,`2-digit`,`short`,`long`,`narrow`][n-1];break;case`w`:case`W`:throw RangeError("`w/W` (week) patterns are not supported");case`d`:t.day=[`numeric`,`2-digit`][n-1];break;case`D`:case`F`:case`g`:throw RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");case`E`:t.weekday=n===4?`long`:n===5?`narrow`:`short`;break;case`e`:if(n<4)throw RangeError("`e..eee` (weekday) patterns are not supported");t.weekday=[`short`,`long`,`narrow`,`short`][n-3];break;case`c`:if(n<4)throw RangeError("`c..ccc` (weekday) patterns are not supported");t.weekday=[`short`,`long`,`narrow`,`short`][n-3];break;case`a`:t.hour12=!0;break;case`b`:case`B`:throw RangeError("`b/B` (period) patterns are not supported, use `a` instead");case`h`:t.hourCycle=`h12`,t.hour=[`numeric`,`2-digit`][n-1];break;case`H`:t.hourCycle=`h23`,t.hour=[`numeric`,`2-digit`][n-1];break;case`K`:t.hourCycle=`h11`,t.hour=[`numeric`,`2-digit`][n-1];break;case`k`:t.hourCycle=`h24`,t.hour=[`numeric`,`2-digit`][n-1];break;case`j`:case`J`:case`C`:throw RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");case`m`:t.minute=[`numeric`,`2-digit`][n-1];break;case`s`:t.second=[`numeric`,`2-digit`][n-1];break;case`S`:case`A`:throw RangeError("`S/A` (second) patterns are not supported, use `s` instead");case`z`:t.timeZoneName=n<4?`short`:`long`;break;case`Z`:case`O`:case`v`:case`V`:case`X`:case`x`:throw RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead")}return``}),t}var Ke=/[\t-\r \x85\u200E\u200F\u2028\u2029]/i;function qe(e){if(e.length===0)throw Error(`Number skeleton cannot be empty`);let t=e.split(Ke).filter(e=>e.length>0),n=[];for(let e of t){let t=e.split(`/`);if(t.length===0)throw Error(`Invalid number skeleton`);let[r,...i]=t;for(let e of i)if(e.length===0)throw Error(`Invalid number skeleton`);n.push({stem:r,options:i})}return n}function Je(e){return e.replace(/^(.*?)-/,``)}var Ye=/^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g,Xe=/^(@+)?(\+|#+)?[rs]?$/g,Ze=/(\*)(0+)|(#+)(0+)|(0+)/g,Qe=/^(0+)$/;function $e(e){let t={};return e[e.length-1]===`r`?t.roundingPriority=`morePrecision`:e[e.length-1]===`s`&&(t.roundingPriority=`lessPrecision`),e.replace(Xe,function(e,n,r){return typeof r==`string`?r===`+`?t.minimumSignificantDigits=n.length:n[0]===`#`?t.maximumSignificantDigits=n.length:(t.minimumSignificantDigits=n.length,t.maximumSignificantDigits=n.length+(typeof r==`string`?r.length:0)):(t.minimumSignificantDigits=n.length,t.maximumSignificantDigits=n.length),``}),t}function et(e){switch(e){case`sign-auto`:return{signDisplay:`auto`};case`sign-accounting`:case`()`:return{currencySign:`accounting`};case`sign-always`:case`+!`:return{signDisplay:`always`};case`sign-accounting-always`:case`()!`:return{signDisplay:`always`,currencySign:`accounting`};case`sign-except-zero`:case`+?`:return{signDisplay:`exceptZero`};case`sign-accounting-except-zero`:case`()?`:return{signDisplay:`exceptZero`,currencySign:`accounting`};case`sign-never`:case`+_`:return{signDisplay:`never`}}}function tt(e){let t;if(e[0]===`E`&&e[1]===`E`?(t={notation:`engineering`},e=e.slice(2)):e[0]===`E`&&(t={notation:`scientific`},e=e.slice(1)),t){let n=e.slice(0,2);if(n===`+!`?(t.signDisplay=`always`,e=e.slice(2)):n===`+?`&&(t.signDisplay=`exceptZero`,e=e.slice(2)),!Qe.test(e))throw Error(`Malformed concise eng/scientific notation`);t.minimumIntegerDigits=e.length}return t}function nt(e){return et(e)||{}}function rt(e){let t={};for(let n of e){switch(n.stem){case`percent`:case`%`:t.style=`percent`;continue;case`%x100`:t.style=`percent`,t.scale=100;continue;case`currency`:t.style=`currency`,t.currency=n.options[0];continue;case`group-off`:case`,_`:t.useGrouping=!1;continue;case`precision-integer`:case`.`:t.maximumFractionDigits=0;continue;case`measure-unit`:case`unit`:t.style=`unit`,t.unit=Je(n.options[0]);continue;case`compact-short`:case`K`:t.notation=`compact`,t.compactDisplay=`short`;continue;case`compact-long`:case`KK`:t.notation=`compact`,t.compactDisplay=`long`;continue;case`scientific`:t={...t,notation:`scientific`,...n.options.reduce((e,t)=>({...e,...nt(t)}),{})};continue;case`engineering`:t={...t,notation:`engineering`,...n.options.reduce((e,t)=>({...e,...nt(t)}),{})};continue;case`notation-simple`:t.notation=`standard`;continue;case`unit-width-narrow`:t.currencyDisplay=`narrowSymbol`,t.unitDisplay=`narrow`;continue;case`unit-width-short`:t.currencyDisplay=`code`,t.unitDisplay=`short`;continue;case`unit-width-full-name`:t.currencyDisplay=`name`,t.unitDisplay=`long`;continue;case`unit-width-iso-code`:t.currencyDisplay=`symbol`;continue;case`scale`:t.scale=parseFloat(n.options[0]);continue;case`rounding-mode-floor`:t.roundingMode=`floor`;continue;case`rounding-mode-ceiling`:t.roundingMode=`ceil`;continue;case`rounding-mode-down`:t.roundingMode=`trunc`;continue;case`rounding-mode-up`:t.roundingMode=`expand`;continue;case`rounding-mode-half-even`:t.roundingMode=`halfEven`;continue;case`rounding-mode-half-down`:t.roundingMode=`halfTrunc`;continue;case`rounding-mode-half-up`:t.roundingMode=`halfExpand`;continue;case`integer-width`:if(n.options.length>1)throw RangeError(`integer-width stems only accept a single optional option`);n.options[0].replace(Ze,function(e,n,r,i,a,o){if(n)t.minimumIntegerDigits=r.length;else if(i&&a)throw Error(`We currently do not support maximum integer digits`);else if(o)throw Error(`We currently do not support exact integer digits`);return``});continue}if(Qe.test(n.stem)){t.minimumIntegerDigits=n.stem.length;continue}if(Ye.test(n.stem)){if(n.options.length>1)throw RangeError(`Fraction-precision stems only accept a single optional option`);n.stem.replace(Ye,function(e,n,r,i,a,o){return r===`*`?t.minimumFractionDigits=n.length:i&&i[0]===`#`?t.maximumFractionDigits=i.length:a&&o?(t.minimumFractionDigits=a.length,t.maximumFractionDigits=a.length+o.length):(t.minimumFractionDigits=n.length,t.maximumFractionDigits=n.length),``});let e=n.options[0];e===`w`?t={...t,trailingZeroDisplay:`stripIfInteger`}:e&&(t={...t,...$e(e)});continue}if(Xe.test(n.stem)){t={...t,...$e(n.stem)};continue}let e=et(n.stem);e&&(t={...t,...e});let r=tt(n.stem);r&&(t={...t,...r})}return t}var it=function(e){return e[e.EXPECT_ARGUMENT_CLOSING_BRACE=1]=`EXPECT_ARGUMENT_CLOSING_BRACE`,e[e.EMPTY_ARGUMENT=2]=`EMPTY_ARGUMENT`,e[e.MALFORMED_ARGUMENT=3]=`MALFORMED_ARGUMENT`,e[e.EXPECT_ARGUMENT_TYPE=4]=`EXPECT_ARGUMENT_TYPE`,e[e.INVALID_ARGUMENT_TYPE=5]=`INVALID_ARGUMENT_TYPE`,e[e.EXPECT_ARGUMENT_STYLE=6]=`EXPECT_ARGUMENT_STYLE`,e[e.INVALID_NUMBER_SKELETON=7]=`INVALID_NUMBER_SKELETON`,e[e.INVALID_DATE_TIME_SKELETON=8]=`INVALID_DATE_TIME_SKELETON`,e[e.EXPECT_NUMBER_SKELETON=9]=`EXPECT_NUMBER_SKELETON`,e[e.EXPECT_DATE_TIME_SKELETON=10]=`EXPECT_DATE_TIME_SKELETON`,e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE=11]=`UNCLOSED_QUOTE_IN_ARGUMENT_STYLE`,e[e.EXPECT_SELECT_ARGUMENT_OPTIONS=12]=`EXPECT_SELECT_ARGUMENT_OPTIONS`,e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE=13]=`EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE`,e[e.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE=14]=`INVALID_PLURAL_ARGUMENT_OFFSET_VALUE`,e[e.EXPECT_SELECT_ARGUMENT_SELECTOR=15]=`EXPECT_SELECT_ARGUMENT_SELECTOR`,e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR=16]=`EXPECT_PLURAL_ARGUMENT_SELECTOR`,e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT=17]=`EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT`,e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT=18]=`EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT`,e[e.INVALID_PLURAL_ARGUMENT_SELECTOR=19]=`INVALID_PLURAL_ARGUMENT_SELECTOR`,e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR=20]=`DUPLICATE_PLURAL_ARGUMENT_SELECTOR`,e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR=21]=`DUPLICATE_SELECT_ARGUMENT_SELECTOR`,e[e.MISSING_OTHER_CLAUSE=22]=`MISSING_OTHER_CLAUSE`,e[e.INVALID_TAG=23]=`INVALID_TAG`,e[e.INVALID_TAG_NAME=25]=`INVALID_TAG_NAME`,e[e.UNMATCHED_CLOSING_TAG=26]=`UNMATCHED_CLOSING_TAG`,e[e.UNCLOSED_TAG=27]=`UNCLOSED_TAG`,e}({});function at(e){return e.type===0}function ot(e){return e.type===1}function st(e){return e.type===2}function ct(e){return e.type===3}function lt(e){return e.type===4}function ut(e){return e.type===5}function dt(e){return e.type===6}function ft(e){return e.type===7}function pt(e){return e.type===8}function mt(e){return!!(e&&typeof e==`object`&&e.type===0)}function H(e){return!!(e&&typeof e==`object`&&e.type===1)}var ht=/[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/,U={"001":[`H`,`h`],419:[`h`,`H`,`hB`,`hb`],AC:[`H`,`h`,`hb`,`hB`],AD:[`H`,`hB`],AE:[`h`,`hB`,`hb`,`H`],AF:[`H`,`hb`,`hB`,`h`],AG:[`h`,`hb`,`H`,`hB`],AI:[`H`,`h`,`hb`,`hB`],AL:[`h`,`H`,`hB`],AM:[`H`,`hB`],AO:[`H`,`hB`],AR:[`h`,`H`,`hB`,`hb`],AS:[`h`,`H`],AT:[`H`,`hB`],AU:[`h`,`hb`,`H`,`hB`],AW:[`H`,`hB`],AX:[`H`],AZ:[`H`,`hB`,`h`],BA:[`H`,`hB`,`h`],BB:[`h`,`hb`,`H`,`hB`],BD:[`h`,`hB`,`H`],BE:[`H`,`hB`],BF:[`H`,`hB`],BG:[`H`,`hB`,`h`],BH:[`h`,`hB`,`hb`,`H`],BI:[`H`,`h`],BJ:[`H`,`hB`],BL:[`H`,`hB`],BM:[`h`,`hb`,`H`,`hB`],BN:[`hb`,`hB`,`h`,`H`],BO:[`h`,`H`,`hB`,`hb`],BQ:[`H`],BR:[`H`,`hB`],BS:[`h`,`hb`,`H`,`hB`],BT:[`h`,`H`],BW:[`H`,`h`,`hb`,`hB`],BY:[`H`,`h`],BZ:[`H`,`h`,`hb`,`hB`],CA:[`h`,`hb`,`H`,`hB`],CC:[`H`,`h`,`hb`,`hB`],CD:[`hB`,`H`],CF:[`H`,`h`,`hB`],CG:[`H`,`hB`],CH:[`H`,`hB`,`h`],CI:[`H`,`hB`],CK:[`H`,`h`,`hb`,`hB`],CL:[`h`,`H`,`hB`,`hb`],CM:[`H`,`h`,`hB`],CN:[`H`,`hB`,`hb`,`h`],CO:[`h`,`H`,`hB`,`hb`],CP:[`H`],CR:[`h`,`H`,`hB`,`hb`],CU:[`h`,`H`,`hB`,`hb`],CV:[`H`,`hB`],CW:[`H`,`hB`],CX:[`H`,`h`,`hb`,`hB`],CY:[`h`,`H`,`hb`,`hB`],CZ:[`H`],DE:[`H`,`hB`],DG:[`H`,`h`,`hb`,`hB`],DJ:[`h`,`H`],DK:[`H`],DM:[`h`,`hb`,`H`,`hB`],DO:[`h`,`H`,`hB`,`hb`],DZ:[`h`,`hB`,`hb`,`H`],EA:[`H`,`h`,`hB`,`hb`],EC:[`h`,`H`,`hB`,`hb`],EE:[`H`,`hB`],EG:[`h`,`hB`,`hb`,`H`],EH:[`h`,`hB`,`hb`,`H`],ER:[`h`,`H`],ES:[`H`,`hB`,`h`,`hb`],ET:[`hB`,`hb`,`h`,`H`],FI:[`H`],FJ:[`h`,`hb`,`H`,`hB`],FK:[`H`,`h`,`hb`,`hB`],FM:[`h`,`hb`,`H`,`hB`],FO:[`H`,`h`],FR:[`H`,`hB`],GA:[`H`,`hB`],GB:[`H`,`h`,`hb`,`hB`],GD:[`h`,`hb`,`H`,`hB`],GE:[`H`,`hB`,`h`],GF:[`H`,`hB`],GG:[`H`,`h`,`hb`,`hB`],GH:[`h`,`H`],GI:[`H`,`h`,`hb`,`hB`],GL:[`H`,`h`],GM:[`h`,`hb`,`H`,`hB`],GN:[`H`,`hB`],GP:[`H`,`hB`],GQ:[`H`,`hB`,`h`,`hb`],GR:[`h`,`H`,`hb`,`hB`],GS:[`H`,`h`,`hb`,`hB`],GT:[`h`,`H`,`hB`,`hb`],GU:[`h`,`hb`,`H`,`hB`],GW:[`H`,`hB`],GY:[`h`,`hb`,`H`,`hB`],HK:[`h`,`hB`,`hb`,`H`],HN:[`h`,`H`,`hB`,`hb`],HR:[`H`,`hB`],HU:[`H`,`h`],IC:[`H`,`h`,`hB`,`hb`],ID:[`H`],IE:[`H`,`h`,`hb`,`hB`],IL:[`H`,`hB`],IM:[`H`,`h`,`hb`,`hB`],IN:[`h`,`H`],IO:[`H`,`h`,`hb`,`hB`],IQ:[`h`,`hB`,`hb`,`H`],IR:[`hB`,`H`],IS:[`H`],IT:[`H`,`hB`],JE:[`H`,`h`,`hb`,`hB`],JM:[`h`,`hb`,`H`,`hB`],JO:[`h`,`hB`,`hb`,`H`],JP:[`H`,`K`,`h`],KE:[`hB`,`hb`,`H`,`h`],KG:[`H`,`h`,`hB`,`hb`],KH:[`hB`,`h`,`H`,`hb`],KI:[`h`,`hb`,`H`,`hB`],KM:[`H`,`h`,`hB`,`hb`],KN:[`h`,`hb`,`H`,`hB`],KP:[`h`,`H`,`hB`,`hb`],KR:[`h`,`H`,`hB`,`hb`],KW:[`h`,`hB`,`hb`,`H`],KY:[`h`,`hb`,`H`,`hB`],KZ:[`H`,`hB`],LA:[`H`,`hb`,`hB`,`h`],LB:[`h`,`hB`,`hb`,`H`],LC:[`h`,`hb`,`H`,`hB`],LI:[`H`,`hB`,`h`],LK:[`H`,`h`,`hB`,`hb`],LR:[`h`,`hb`,`H`,`hB`],LS:[`h`,`H`],LT:[`H`,`h`,`hb`,`hB`],LU:[`H`,`h`,`hB`],LV:[`H`,`hB`,`hb`,`h`],LY:[`h`,`hB`,`hb`,`H`],MA:[`H`,`h`,`hB`,`hb`],MC:[`H`,`hB`],MD:[`H`,`hB`],ME:[`H`,`hB`,`h`],MF:[`H`,`hB`],MG:[`H`,`h`],MH:[`h`,`hb`,`H`,`hB`],MK:[`H`,`h`,`hb`,`hB`],ML:[`H`],MM:[`hB`,`hb`,`H`,`h`],MN:[`H`,`h`,`hb`,`hB`],MO:[`h`,`hB`,`hb`,`H`],MP:[`h`,`hb`,`H`,`hB`],MQ:[`H`,`hB`],MR:[`h`,`hB`,`hb`,`H`],MS:[`H`,`h`,`hb`,`hB`],MT:[`H`,`h`],MU:[`H`,`h`],MV:[`H`,`h`],MW:[`h`,`hb`,`H`,`hB`],MX:[`h`,`H`,`hB`,`hb`],MY:[`hb`,`hB`,`h`,`H`],MZ:[`H`,`hB`],NA:[`h`,`H`,`hB`,`hb`],NC:[`H`,`hB`],NE:[`H`],NF:[`H`,`h`,`hb`,`hB`],NG:[`H`,`h`,`hb`,`hB`],NI:[`h`,`H`,`hB`,`hb`],NL:[`H`,`hB`],NO:[`H`,`h`],NP:[`H`,`h`,`hB`],NR:[`H`,`h`,`hb`,`hB`],NU:[`H`,`h`,`hb`,`hB`],NZ:[`h`,`hb`,`H`,`hB`],OM:[`h`,`hB`,`hb`,`H`],PA:[`h`,`H`,`hB`,`hb`],PE:[`h`,`H`,`hB`,`hb`],PF:[`H`,`h`,`hB`],PG:[`h`,`H`],PH:[`h`,`hB`,`hb`,`H`],PK:[`h`,`hB`,`H`],PL:[`H`,`h`],PM:[`H`,`hB`],PN:[`H`,`h`,`hb`,`hB`],PR:[`h`,`H`,`hB`,`hb`],PS:[`h`,`hB`,`hb`,`H`],PT:[`H`,`hB`],PW:[`h`,`H`],PY:[`h`,`H`,`hB`,`hb`],QA:[`h`,`hB`,`hb`,`H`],RE:[`H`,`hB`],RO:[`H`,`hB`],RS:[`H`,`hB`,`h`],RU:[`H`],RW:[`H`,`h`],SA:[`h`,`hB`,`hb`,`H`],SB:[`h`,`hb`,`H`,`hB`],SC:[`H`,`h`,`hB`],SD:[`h`,`hB`,`hb`,`H`],SE:[`H`],SG:[`h`,`hb`,`H`,`hB`],SH:[`H`,`h`,`hb`,`hB`],SI:[`H`,`hB`],SJ:[`H`],SK:[`H`],SL:[`h`,`hb`,`H`,`hB`],SM:[`H`,`h`,`hB`],SN:[`H`,`h`,`hB`],SO:[`h`,`H`],SR:[`H`,`hB`],SS:[`h`,`hb`,`H`,`hB`],ST:[`H`,`hB`],SV:[`h`,`H`,`hB`,`hb`],SX:[`H`,`h`,`hb`,`hB`],SY:[`h`,`hB`,`hb`,`H`],SZ:[`h`,`hb`,`H`,`hB`],TA:[`H`,`h`,`hb`,`hB`],TC:[`h`,`hb`,`H`,`hB`],TD:[`h`,`H`,`hB`],TF:[`H`,`h`,`hB`],TG:[`H`,`hB`],TH:[`H`,`h`],TJ:[`H`,`h`],TL:[`H`,`hB`,`hb`,`h`],TM:[`H`,`h`],TN:[`h`,`hB`,`hb`,`H`],TO:[`h`,`H`],TR:[`H`,`hB`],TT:[`h`,`hb`,`H`,`hB`],TW:[`hB`,`hb`,`h`,`H`],TZ:[`hB`,`hb`,`H`,`h`],UA:[`H`,`hB`,`h`],UG:[`hB`,`hb`,`H`,`h`],UM:[`h`,`hb`,`H`,`hB`],US:[`h`,`hb`,`H`,`hB`],UY:[`h`,`H`,`hB`,`hb`],UZ:[`H`,`hB`,`h`],VA:[`H`,`h`,`hB`],VC:[`h`,`hb`,`H`,`hB`],VE:[`h`,`H`,`hB`,`hb`],VG:[`h`,`hb`,`H`,`hB`],VI:[`h`,`hb`,`H`,`hB`],VN:[`H`,`h`],VU:[`h`,`H`],WF:[`H`,`hB`],WS:[`h`,`H`],XK:[`H`,`hB`,`h`],YE:[`h`,`hB`,`hb`,`H`],YT:[`H`,`hB`],ZA:[`H`,`h`,`hb`,`hB`],ZM:[`h`,`hb`,`H`,`hB`],ZW:[`H`,`h`],"af-ZA":[`H`,`h`,`hB`,`hb`],"ar-001":[`h`,`hB`,`hb`,`H`],"ca-ES":[`H`,`h`,`hB`],"en-001":[`h`,`hb`,`H`,`hB`],"en-HK":[`h`,`hb`,`H`,`hB`],"en-IL":[`H`,`h`,`hb`,`hB`],"en-MY":[`h`,`hb`,`H`,`hB`],"es-BR":[`H`,`h`,`hB`,`hb`],"es-ES":[`H`,`h`,`hB`,`hb`],"es-GQ":[`H`,`h`,`hB`,`hb`],"fr-CA":[`H`,`h`,`hB`],"gl-ES":[`H`,`h`,`hB`],"gu-IN":[`hB`,`hb`,`h`,`H`],"hi-IN":[`hB`,`h`,`H`],"it-CH":[`H`,`h`,`hB`],"it-IT":[`H`,`h`,`hB`],"kn-IN":[`hB`,`h`,`H`],"ku-SY":[`H`,`hB`],"ml-IN":[`hB`,`h`,`H`],"mr-IN":[`hB`,`hb`,`h`,`H`],"pa-IN":[`hB`,`hb`,`h`,`H`],"ta-IN":[`hB`,`h`,`hb`,`H`],"te-IN":[`hB`,`h`,`H`],"zu-ZA":[`H`,`hB`,`hb`,`h`]};function gt(e,t){let n=``;for(let r=0;r<e.length;r++){let i=e.charAt(r);if(i===`j`){let a=0;for(;r+1<e.length&&e.charAt(r+1)===i;)a++,r++;let o=1+(a&1),s=a<2?1:3+(a>>1),c=_t(t);for((c==`H`||c==`k`)&&(s=0);s-- >0;)n+=`a`;for(;o-- >0;)n=c+n}else i===`J`?n+=`H`:n+=i}return n}function _t(e){let t=e.hourCycle;if(t===void 0&&e.hourCycles&&e.hourCycles.length&&(t=e.hourCycles[0]),t)switch(t){case`h24`:return`k`;case`h23`:return`H`;case`h12`:return`h`;case`h11`:return`K`;default:throw Error(`Invalid hourCycle`)}let n=e.language,r;return n!==`root`&&(r=e.maximize().region),(U[r||``]||U[n||``]||U[`${n}-001`]||U[`001`])[0]}var vt=RegExp(`^${ht.source}*`),yt=RegExp(`${ht.source}*$`);function W(e,t){return{start:e,end:t}}var bt=!!Object.fromEntries,xt=!!String.prototype.trimStart,St=!!String.prototype.trimEnd,Ct=bt?Object.fromEntries:function(e){let t={};for(let[n,r]of e)t[n]=r;return t},wt=xt?function(e){return e.trimStart()}:function(e){return e.replace(vt,``)},Tt=St?function(e){return e.trimEnd()}:function(e){return e.replace(yt,``)},Et=RegExp(`([^\\p{White_Space}\\p{Pattern_Syntax}]*)`,`yu`);function Dt(e,t){return Et.lastIndex=t,Et.exec(e)[1]??``}function Ot(e){if(e.length===0)return null;let t=1,n=1;for(let r=0;r<e.length;){let i=e.charCodeAt(r);switch(i){case 35:case 39:case 60:case 123:case 125:return null}if(i===10)t++,n=1,r++;else if(n++,i>=55296&&i<=56319&&r+1<e.length){let t=e.charCodeAt(r+1);r+=t>=56320&&t<=57343?2:1}else r++}return{offset:e.length,line:t,column:n}}var kt=class{constructor(e,t={}){this.message=e,this.position={offset:0,line:1,column:1},this.ignoreTag=!!t.ignoreTag,this.locale=t.locale,this.requiresOtherClause=!!t.requiresOtherClause,this.shouldParseSkeletons=!!t.shouldParseSkeletons}parse(){if(this.offset()!==0)throw Error(`parser can only be used once`);if(this.message.length>0){let e=this.message.charCodeAt(0);if(e!==35&&e!==39&&e!==60&&e!==123&&e!==125){let e=Ot(this.message);if(e){let t=this.clonePosition();return this.position=e,{val:[{type:0,value:this.message,location:W(t,this.clonePosition())}],err:null}}}}return this.parseMessage(0,``,!1)}parseMessage(e,t,n){let r=[];for(;!this.isEOF();){let i=this.char();if(i===123){let t=this.parseArgument(e,n);if(t.err)return t;r.push(t.val)}else if(i===125&&e>0)break;else if(i===35&&(t===`plural`||t===`selectordinal`)){let e=this.clonePosition();this.bump(),r.push({type:7,location:W(e,this.clonePosition())})}else if(i===60&&!this.ignoreTag&&this.peek()===47){if(n)break;return this.error(26,W(this.clonePosition(),this.clonePosition()))}else if(i===60&&!this.ignoreTag&&G(this.peek()||0)){let n=this.parseTag(e,t);if(n.err)return n;r.push(n.val)}else{let n=this.parseLiteral(e,t);if(n.err)return n;r.push(n.val)}}return{val:r,err:null}}parseTag(e,t){let n=this.clonePosition();this.bump();let r=this.parseTagName();if(this.bumpSpace(),this.bumpIf(`/>`))return{val:{type:0,value:`<${r}/>`,location:W(n,this.clonePosition())},err:null};if(this.bumpIf(`>`)){let i=this.parseMessage(e+1,t,!0);if(i.err)return i;let a=i.val,o=this.clonePosition();if(this.bumpIf(`</`)){if(this.isEOF()||!G(this.char()))return this.error(23,W(o,this.clonePosition()));let e=this.clonePosition();return r===this.parseTagName()?(this.bumpSpace(),this.bumpIf(`>`)?{val:{type:8,value:r,children:a,location:W(n,this.clonePosition())},err:null}:this.error(23,W(o,this.clonePosition()))):this.error(26,W(e,this.clonePosition()))}else return this.error(27,W(n,this.clonePosition()))}else return this.error(23,W(n,this.clonePosition()))}parseTagName(){let e=this.offset();for(this.bump();!this.isEOF()&&jt(this.char());)this.bump();return this.message.slice(e,this.offset())}parseLiteral(e,t){let n=this.clonePosition(),r=``;for(;;){let n=this.tryParseQuote(t);if(n){r+=n;continue}let i=this.tryParseUnquoted(e,t);if(i){r+=i;continue}let a=this.tryParseLeftAngleBracket();if(a){r+=a;continue}break}let i=W(n,this.clonePosition());return{val:{type:0,value:r,location:i},err:null}}tryParseLeftAngleBracket(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!At(this.peek()||0))?(this.bump(),`<`):null}tryParseQuote(e){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),`'`;case 123:case 60:case 62:case 125:break;case 35:if(e===`plural`||e===`selectordinal`)break;return null;default:return null}this.bump();let t=[this.char()];for(this.bump();!this.isEOF();){let e=this.char();if(e===39)if(this.peek()===39)t.push(39),this.bump();else{this.bump();break}else t.push(e);this.bump()}return String.fromCodePoint(...t)}tryParseUnquoted(e,t){if(this.isEOF())return null;let n=this.char();return n===60||n===123||n===35&&(t===`plural`||t===`selectordinal`)||n===125&&e>0?null:(this.bump(),String.fromCodePoint(n))}parseArgument(e,t){let n=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(1,W(n,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(2,W(n,this.clonePosition()));let r=this.parseIdentifierIfPossible().value;if(!r)return this.error(3,W(n,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(1,W(n,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:1,value:r,location:W(n,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(1,W(n,this.clonePosition())):this.parseArgumentOptions(e,t,r,n);default:return this.error(3,W(n,this.clonePosition()))}}parseIdentifierIfPossible(){let e=this.clonePosition(),t=this.offset(),n=Dt(this.message,t),r=t+n.length;return this.bumpTo(r),{value:n,location:W(e,this.clonePosition())}}parseArgumentOptions(e,t,n,r){let i=this.clonePosition(),a=this.parseIdentifierIfPossible().value,o=this.clonePosition();switch(a){case``:return this.error(4,W(i,o));case`number`:case`date`:case`time`:{this.bumpSpace();let e=null;if(this.bumpIf(`,`)){this.bumpSpace();let t=this.clonePosition(),n=this.parseSimpleArgStyleIfPossible();if(n.err)return n;let r=Tt(n.val);if(r.length===0)return this.error(6,W(this.clonePosition(),this.clonePosition()));e={style:r,styleLocation:W(t,this.clonePosition())}}let t=this.tryParseArgumentClose(r);if(t.err)return t;let i=W(r,this.clonePosition());if(e&&e.style.startsWith(`::`)){let t=wt(e.style.slice(2));if(a===`number`){let r=this.parseNumberSkeletonFromString(t,e.styleLocation);return r.err?r:{val:{type:2,value:n,location:i,style:r.val},err:null}}else{if(t.length===0)return this.error(10,i);let r=t;this.locale&&(r=gt(t,this.locale));let o={type:1,pattern:r,location:e.styleLocation,parsedOptions:this.shouldParseSkeletons?Ge(r):{}};return{val:{type:a===`date`?3:4,value:n,location:i,style:o},err:null}}}return{val:{type:a===`number`?2:a===`date`?3:4,value:n,location:i,style:e?.style??null},err:null}}case`plural`:case`selectordinal`:case`select`:{let i=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(`,`))return this.error(12,W(i,{...i}));this.bumpSpace();let o=this.parseIdentifierIfPossible(),s=0;if(a!==`select`&&o.value===`offset`){if(!this.bumpIf(`:`))return this.error(13,W(this.clonePosition(),this.clonePosition()));this.bumpSpace();let e=this.tryParseDecimalInteger(13,14);if(e.err)return e;this.bumpSpace(),o=this.parseIdentifierIfPossible(),s=e.val}let c=this.tryParsePluralOrSelectOptions(e,a,t,o);if(c.err)return c;let l=this.tryParseArgumentClose(r);if(l.err)return l;let u=W(r,this.clonePosition());return a===`select`?{val:{type:5,value:n,options:Ct(c.val),location:u},err:null}:{val:{type:6,value:n,options:Ct(c.val),offset:s,pluralType:a===`plural`?`cardinal`:`ordinal`,location:u},err:null}}default:return this.error(5,W(i,o))}}tryParseArgumentClose(e){return this.isEOF()||this.char()!==125?this.error(1,W(e,this.clonePosition())):(this.bump(),{val:!0,err:null})}parseSimpleArgStyleIfPossible(){let e=0,t=this.clonePosition();for(;!this.isEOF();)switch(this.char()){case 39:{this.bump();let e=this.clonePosition();if(!this.bumpUntil(`'`))return this.error(11,W(e,this.clonePosition()));this.bump();break}case 123:e+=1,this.bump();break;case 125:if(e>0)--e;else return{val:this.message.slice(t.offset,this.offset()),err:null};break;default:this.bump();break}return{val:this.message.slice(t.offset,this.offset()),err:null}}parseNumberSkeletonFromString(e,t){let n=[];try{n=qe(e)}catch{return this.error(7,t)}return{val:{type:0,tokens:n,location:t,parsedOptions:this.shouldParseSkeletons?rt(n):{}},err:null}}tryParsePluralOrSelectOptions(e,t,n,r){let i=!1,a=[],o=new Set,{value:s,location:c}=r;for(;;){if(s.length===0){let e=this.clonePosition();if(t!==`select`&&this.bumpIf(`=`)){let t=this.tryParseDecimalInteger(16,19);if(t.err)return t;c=W(e,this.clonePosition()),s=this.message.slice(e.offset,this.offset())}else break}if(o.has(s))return this.error(t===`select`?21:20,c);s===`other`&&(i=!0),this.bumpSpace();let r=this.clonePosition();if(!this.bumpIf(`{`))return this.error(t===`select`?17:18,W(this.clonePosition(),this.clonePosition()));let l=this.parseMessage(e+1,t,n);if(l.err)return l;let u=this.tryParseArgumentClose(r);if(u.err)return u;a.push([s,{value:l.val,location:W(r,this.clonePosition())}]),o.add(s),this.bumpSpace(),{value:s,location:c}=this.parseIdentifierIfPossible()}return a.length===0?this.error(t===`select`?15:16,W(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!i?this.error(22,W(this.clonePosition(),this.clonePosition())):{val:a,err:null}}tryParseDecimalInteger(e,t){let n=1,r=this.clonePosition();this.bumpIf(`+`)||this.bumpIf(`-`)&&(n=-1);let i=!1,a=0;for(;!this.isEOF();){let e=this.char();if(e>=48&&e<=57)i=!0,a=a*10+(e-48),this.bump();else break}let o=W(r,this.clonePosition());return i?(a*=n,Number.isSafeInteger(a)?{val:a,err:null}:this.error(t,o)):this.error(e,o)}offset(){return this.position.offset}isEOF(){return this.offset()===this.message.length}clonePosition(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}}char(){let e=this.position.offset;if(e>=this.message.length)throw Error(`out of bound`);let t=this.message.codePointAt(e);if(t===void 0)throw Error(`Offset ${e} is at invalid UTF-16 code unit boundary`);return t}error(e,t){return{val:null,err:{kind:e,message:this.message,location:t}}}bump(){if(this.isEOF())return;let e=this.char();e===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=e<65536?1:2)}bumpIf(e){if(this.message.startsWith(e,this.offset())){for(let t=0;t<e.length;t++)this.bump();return!0}return!1}bumpUntil(e){let t=this.offset(),n=this.message.indexOf(e,t);return n>=0?(this.bumpTo(n),!0):(this.bumpTo(this.message.length),!1)}bumpTo(e){if(this.offset()>e)throw Error(`targetOffset ${e} must be greater than or equal to the current offset ${this.offset()}`);for(e=Math.min(e,this.message.length);;){let t=this.offset();if(t===e)break;if(t>e)throw Error(`targetOffset ${e} is at invalid UTF-16 code unit boundary`);if(this.bump(),this.isEOF())break}}bumpSpace(){for(;!this.isEOF()&&Mt(this.char());)this.bump()}peek(){if(this.isEOF())return null;let e=this.char(),t=this.offset();return this.message.charCodeAt(t+(e>=65536?2:1))??null}};function G(e){return e>=97&&e<=122||e>=65&&e<=90}function At(e){return G(e)||e===47}function jt(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function Mt(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function K(e){e.forEach(e=>{if(delete e.location,ut(e)||dt(e))for(let t in e.options)delete e.options[t].location,K(e.options[t].value);else st(e)&&mt(e.style)||(ct(e)||lt(e))&&H(e.style)?delete e.style.location:pt(e)&&K(e.children)})}function Nt(e,t={}){t={shouldParseSkeletons:!0,requiresOtherClause:!0,...t};let n=new kt(e,t).parse();if(n.err){let e=SyntaxError(it[n.err.kind]);throw e.location=n.err.location,e.originalMessage=n.err.message,e}return t?.captureLocation||K(n.val),n.val}var q=class extends Error{constructor(e,t,n){super(e),this.code=t,this.originalMessage=n}toString(){return`[formatjs Error: ${this.code}] ${this.message}`}},Pt=class extends q{constructor(e,t,n,r){super(`Invalid values for "${e}": "${t}". Options are "${Object.keys(n).join(`", "`)}"`,`INVALID_VALUE`,r)}},Ft=class extends q{constructor(e,t,n){super(`Value for "${e}" must be of type ${t}`,`INVALID_VALUE`,n)}},It=class extends q{constructor(e,t){super(`The intl string context variable "${e}" was not provided to the string "${t}"`,`MISSING_VALUE`,t)}};function Lt(e){return e.length<2?e:e.reduce((e,t)=>{let n=e[e.length-1];return!n||n.type!==0||t.type!==0?e.push(t):n.value+=t.value,e},[])}function Rt(e){return typeof e==`function`}function J(e,t,n,r,i,a,o){if(e.length===1&&at(e[0]))return[{type:0,value:e[0].value}];let s=[];for(let c of e){if(at(c)){s.push({type:0,value:c.value});continue}if(ft(c)){typeof a==`number`&&s.push({type:0,value:n.getNumberFormat(t).format(a)});continue}let{value:e}=c;if(!(i&&e in i))throw new It(e,o);let l=i[e];if(ot(c)){(!l||typeof l==`string`||typeof l==`number`||typeof l==`bigint`)&&(l=typeof l==`string`||typeof l==`number`||typeof l==`bigint`?String(l):``),s.push({type:typeof l==`string`?0:1,value:l});continue}if(ct(c)){let e=typeof c.style==`string`?r.date[c.style]:H(c.style)?c.style.parsedOptions:void 0;s.push({type:0,value:n.getDateTimeFormat(t,e).format(l)});continue}if(lt(c)){let e=typeof c.style==`string`?r.time[c.style]:H(c.style)?c.style.parsedOptions:r.time.medium;s.push({type:0,value:n.getDateTimeFormat(t,e).format(l)});continue}if(st(c)){let e=typeof c.style==`string`?r.number[c.style]:mt(c.style)?c.style.parsedOptions:void 0;if(e&&e.scale){let t=e.scale||1;if(typeof l==`bigint`){if(!Number.isInteger(t))throw TypeError(`Cannot apply fractional scale ${t} to bigint value. Scale must be an integer when formatting bigint.`);l*=BigInt(t)}else l*=t}s.push({type:0,value:n.getNumberFormat(t,e).format(l)});continue}if(pt(c)){let{children:e,value:l}=c,u=i[l];if(!Rt(u))throw new Ft(l,`function`,o);let d=u(J(e,t,n,r,i,a).map(e=>e.value));Array.isArray(d)||(d=[d]),s.push(...d.map(e=>({type:typeof e==`string`?0:1,value:e})))}if(ut(c)){let e=l,a=(Object.prototype.hasOwnProperty.call(c.options,e)?c.options[e]:void 0)||c.options.other;if(!a)throw new Pt(c.value,l,Object.keys(c.options),o);s.push(...J(a.value,t,n,r,i));continue}if(dt(c)){let e=`=${l}`,a=Object.prototype.hasOwnProperty.call(c.options,e)?c.options[e]:void 0;if(!a){if(!Intl.PluralRules)throw new q(`Intl.PluralRules is not available in this environment.
|
|
1
|
+
import{o as e,r as t}from"./device-settings-DZvv4pnY.js";import{t as n}from"./capture-error-VBsIaC5d.js";import{t as r}from"./preload-helper-Cv2QeVDK.js";var i=e=>typeof e==`string`,a=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},o=e=>e==null?``:String(e),s=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},c=/###/g,l=e=>e&&e.includes(`###`)?e.replace(c,`.`):e,u=e=>!e||i(e),d=(e,t,n)=>{let r=i(t)?t.split(`.`):t,a=0;for(;a<r.length-1;){if(u(e))return{};let t=l(r[a]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++a}return u(e)?{}:{obj:e,k:l(r[a])}},f=(e,t,n)=>{let{obj:r,k:i}=d(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=d(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=d(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},p=(e,t,n,r)=>{let{obj:i,k:a}=d(e,t,Object);i[a]=i[a]||[],i[a].push(n)},m=(e,t)=>{let{obj:n,k:r}=d(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},h=(e,t,n)=>{let r=m(e,n);return r===void 0?m(t,n):r},g=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(Object.prototype.hasOwnProperty.call(e,r)?i(e[r])||e[r]instanceof String||i(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):g(e[r],t[r],n):e[r]=t[r]);return e},_=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),v={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`,"/":`/`},y=e=>i(e)?e.replace(/[&<>"'\/]/g,e=>v[e]):e,b=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},x=[` `,`,`,`?`,`!`,`;`],S=new b(20),ee=(e,t,n)=>{t||=``,n||=``;let r=x.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=S.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},C=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},w=e=>e?.replace(/_/g,`-`),T={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},E=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||T,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>i(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),i(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},D=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},O=class extends D{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let a=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,o=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,s;e.includes(`.`)?s=e.split(`.`):(s=[e,t],n&&(Array.isArray(n)?s.push(...n):i(n)&&a?s.push(...n.split(a)):s.push(n)));let c=m(this.data,s);return!c&&!t&&!n&&e.includes(`.`)&&(e=s[0],t=s[1],n=s.slice(2).join(`.`)),c||!o||!i(n)?c:C(this.data?.[e]?.[t],n,a)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),f(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(i(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=m(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?g(s,n,i):s={...s,...n},f(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},te={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},ne=Symbol(`i18next/PATH_KEY`);function re(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===ne?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function k(e,t){let{[ne]:n}=e(re()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var A=e=>!i(e)&&typeof e!=`boolean`&&typeof e!=`number`,ie=class e extends D{constructor(e,t={}){super(),s([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=E.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=A(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,a=t.ns||this.options.defaultNS||[],o=n&&e.includes(n),s=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!ee(e,n,r);if(o&&!s){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:i(a)?[a]:a};let o=e.split(n);(n!==r||n===r&&this.options.ns.includes(o[0]))&&(a=o.shift()),e=o.join(r)}return{key:e,namespaces:i(a)?[a]:a}}translate(t,n,r){let a=typeof n==`object`?{...n}:n;if(typeof a!=`object`&&this.options.overloadTranslationOptionHandler&&(a=this.options.overloadTranslationOptionHandler(arguments)),typeof a==`object`&&(a={...a}),a||={},t==null)return``;typeof t==`function`&&(t=k(t,{...this.options,...a})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?k(e,{...this.options,...a}):String(e));let o=a.returnDetails===void 0?this.options.returnDetails:a.returnDetails,s=a.keySeparator===void 0?this.options.keySeparator:a.keySeparator,{key:c,namespaces:l}=this.extractFromKey(t[t.length-1],a),u=l[l.length-1],d=a.nsSeparator===void 0?this.options.nsSeparator:a.nsSeparator;d===void 0&&(d=`:`);let f=a.lng||this.language,p=a.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()===`cimode`)return p?o?{res:`${u}${d}${c}`,usedKey:c,exactUsedKey:c,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(a)}:`${u}${d}${c}`:o?{res:c,usedKey:c,exactUsedKey:c,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(a)}:c;let m=this.resolve(t,a),h=m?.res,g=m?.usedKey||c,_=m?.exactUsedKey||c,v=[`[object Number]`,`[object Function]`,`[object RegExp]`],y=a.joinArrays===void 0?this.options.joinArrays:a.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,x=a.count!==void 0&&!i(a.count),S=e.hasDefaultValue(a),ee=x?this.pluralResolver.getSuffix(f,a.count,a):``,C=a.ordinal&&x?this.pluralResolver.getSuffix(f,a.count,{ordinal:!1}):``,w=x&&!a.ordinal&&a.count===0,T=w&&a[`defaultValue${this.options.pluralSeparator}zero`]||a[`defaultValue${ee}`]||a[`defaultValue${C}`]||a.defaultValue,E=h;b&&!h&&S&&(E=T);let D=A(E),O=Object.prototype.toString.apply(E);if(b&&E&&D&&!v.includes(O)&&!(i(y)&&Array.isArray(E))){if(!a.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,E,{...a,ns:l}):`key '${c} (${this.language})' returned an object instead of string.`;return o?(m.res=e,m.usedParams=this.getUsedParamsDetails(a),m):e}if(s){let e=Array.isArray(E),t=e?[]:{},n=e?_:g;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${s}${e}`;S&&!h?t[e]=this.translate(r,{...a,defaultValue:A(T)?T[e]:void 0,joinArrays:!1,ns:l}):t[e]=this.translate(r,{...a,joinArrays:!1,ns:l}),t[e]===r&&(t[e]=E[e])}h=t}}else if(b&&i(y)&&Array.isArray(h))h=h.join(y),h&&=this.extendTranslation(h,t,a,r);else{let e=!1,n=!1;!this.isValidLookup(h)&&S&&(e=!0,h=T),this.isValidLookup(h)||(n=!0,h=c);let i=(a.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:h,o=S&&T!==h&&this.options.updateMissing;if(n||e||o){if(this.logger.log(o?`updateKey`:`missingKey`,f,u,x&&!o?`${c}${this.pluralResolver.getSuffix(f,a.count,a)}`:c,o?T:h),s){let e=this.resolve(c,{...a,keySeparator:!1});e&&e.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 e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,a.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(a.lng||this.language):e.push(a.lng||this.language);let n=(e,t,n)=>{let r=S&&n!==h?n:i;this.options.missingKeyHandler?this.options.missingKeyHandler(e,u,t,r,o,a):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,u,t,r,o,a),this.emit(`missingKey`,e,u,t,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&x?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,a);w&&a[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],c+t,a[`defaultValue${t}`]||T)})}):n(e,c,T))}h=this.extendTranslation(h,t,a,m,r),n&&h===c&&this.options.appendNamespaceToMissingKey&&(h=`${u}${d}${c}`),(n||e)&&this.options.parseMissingKeyHandler&&(h=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${u}${d}${c}`:c,e?h:void 0,a))}return o?(m.res=h,m.usedParams=this.getUsedParamsDetails(a),m):h}extendTranslation(e,t,n,r,a){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let o=i(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),s;if(o){let t=e.match(this.interpolator.nestingRegexp);s=t&&t.length}let c=n.replace&&!i(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(c={...this.options.interpolation.defaultVariables,...c}),e=this.interpolator.interpolate(e,c,n.lng||this.language||r.usedLng,n),o){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;s<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>a?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let o=n.postProcess||this.options.postProcess,s=i(o)?[o]:o;return e!=null&&s?.length&&n.applyPostProcessor!==!1&&(e=te.handle(s,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,a,o,s;return i(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?k(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let c=this.extractFromKey(e,t),l=c.key;r=l;let u=c.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));let d=t.count!==void 0&&!i(t.count),f=d&&!t.ordinal&&t.count===0,p=t.context!==void 0&&(i(t.context)||typeof t.context==`number`)&&t.context!==``,m=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);u.forEach(e=>{this.isValidLookup(n)||(s=e,!this.checkedLoadedFor[`${m[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(s)&&(this.checkedLoadedFor[`${m[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${m.join(`, `)}" won't get resolved as namespace "${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!!!`)),m.forEach(r=>{if(this.isValidLookup(n))return;o=r;let i=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(i,l,r,e,t);else{let e;d&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,a=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(d&&(t.ordinal&&e.startsWith(a)&&i.push(l+e.replace(a,this.options.pluralSeparator)),i.push(l+e),f&&i.push(l+n)),p){let r=`${l}${this.options.contextSeparator||`_`}${t.context}`;i.push(r),d&&(t.ordinal&&e.startsWith(a)&&i.push(r+e.replace(a,this.options.pluralSeparator)),i.push(r+e),f&&i.push(r+n))}}let s;for(;s=i.pop();)this.isValidLookup(n)||(a=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:a,usedLng:o,usedNS:s}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!i(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r={...r,count:e.count}),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},ae=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=E.create(`languageUtils`)}getScriptPartFromCode(e){if(e=w(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=w(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(i(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),i(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],a=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return i(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&a(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&a(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&a(this.getLanguagePartFromCode(e))):i(e)&&a(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||a(this.formatLanguageCode(e))}),r}},oe={zero:0,one:1,two:2,few:3,many:4,other:5},j={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},se=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=E.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=w(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),j;if(!e.match(/-|_/))return j;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>oe[e]-oe[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},M=(e,t,n,r=`.`,a=!0)=>{let o=h(e,t,n);return!o&&a&&i(n)&&(o=C(e,n,r),o===void 0&&(o=C(t,n,r))),o},ce=e=>e.replace(/\$/g,`$$$$`),le=class{constructor(e={}){this.logger=E.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:v}=e.interpolation;this.escape=t===void 0?y:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?_(i):a||`{{`,this.suffix=o?_(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?_(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?_(l):``,this.nestingPrefix=d?_(d):f||_(`$t(`),this.nestingSuffix=p?_(p):m||_(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=v===void 0?!1:v,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let a,s,c,l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=e=>{if(!e.includes(this.formatSeparator)){let i=M(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(M(t,l,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — 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 d=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,f=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>e},{regex:this.regexp,safeValue:e=>this.escapeValue?this.escape(e):e}].forEach(t=>{for(c=0;a=t.regex.exec(e);){let n=a[1].trim();if(s=u(n),s===void 0)if(typeof d==`function`){let t=d(e,a,r);s=i(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))s=``;else if(f){s=a[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),s=``;else !i(s)&&!this.useRawValueToEscape&&(s=o(s));let l=t.safeValue(s);if(e=e.replace(a[0],ce(l)),f?(t.regex.lastIndex+=l.length,t.regex.lastIndex-=a[0].length):t.regex.lastIndex=0,c++,c>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,a,s,c=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${_(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,s);let a=i.match(/'/g),o=i.match(/"/g);((a?.length??0)%2==0&&!o||(o?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{s=JSON.parse(i),t&&(s={...t,...s})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return s.defaultValue&&s.defaultValue.includes(this.prefix)&&delete s.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let l=[];s={...n},s=s.replace&&!i(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;let u=/{.*}/s.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(u!==-1&&(l=r[1].slice(u).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,u)),a=t(c.call(this,r[1].trim(),s),s),a&&r[0]===e&&!i(a))return a;i(a)||(a=o(a)),a||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),l.length&&(a=l.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),a.trim())),e=e.replace(r[0],a),this.regexp.lastIndex=0}return e}},ue=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},de=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(w(r),i),t[o]=s),s(n)}},fe=e=>(t,n,r)=>e(w(n),r)(t),pe=class{constructor(e={}){this.logger=E.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?de:fe;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=de(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator),a=[];for(let e=0;e<i.length;e++){let t=i[e];for(;t.indexOf(`(`)>-1&&!t.includes(`)`)&&e+1<i.length;)t=`${t}${this.formatSeparator}${i[++e]}`;a.push(t)}return a.reduce((e,t)=>{let{formatName:i,formatOptions:a}=ue(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},me=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},he=class extends D{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=E.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{p(n.loaded,[i],a),me(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();i(e)&&(e=this.languageUtils.toResolveHierarchy(e)),i(t)&&(t=[t]);let a=this.queueLoad(e,t,n,r);if(!a.toLoad.length)return a.pending.length||r(),null;a.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" 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(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},N=()=>({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]),i(e[1])&&(t.defaultValue=e[1]),i(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),ge=e=>(i(e.ns)&&(e.ns=[e.ns]),i(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),i(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),P=()=>{},_e=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},F=class e extends D{constructor(e={},t){if(super(),this.options=ge(e),this.services={},this.logger=E,this.modules={external:[]},_e(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(i(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=N();this.options={...n,...this.options,...ge(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?E.init(r(this.modules.logger),this.options):E.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:pe;let t=new ae(this.options);this.store=new O(this.options.resources,this.options);let n=this.services;n.logger=E,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new se(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new le(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new he(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new ie(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=P,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[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(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let o=a(),s=()=>{let e=(e,n)=>{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),o.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?s():setTimeout(s,0),o}loadResources(e,t=P){let n=t,r=i(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=a();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=P,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&te.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=a();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},o=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},s=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=i(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(i(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{o(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(e),n}getFixedT(e,t,n,r){let a=r?.scopeNs,o=(e,t,...r)=>{let i;i=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),i.lng=i.lng||o.lng,i.lngs=i.lngs||o.lngs;let s=i.ns!==void 0&&i.ns!==null;i.ns=i.ns||o.ns,i.keyPrefix!==``&&(i.keyPrefix=i.keyPrefix||n||o.keyPrefix);let c={...this.options,...i};Array.isArray(a)&&!s&&(c.ns=a),typeof i.keyPrefix==`function`&&(i.keyPrefix=k(i.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return i.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=k(e,c)),`${i.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=k(e,c)),u=i.keyPrefix?`${i.keyPrefix}${l}${e}`:e),this.t(u,i)};return i(e)?o.lng=e:o.lngs=e,o.ns=t,o.keyPrefix=n,o}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){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 n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=a();return this.options.ns?(i(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=a();i(e)&&(e=[e]);let r=this.options.preload||[],o=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return o.length?(this.options.preload=r.concat(o),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`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`.split(`.`),n=this.services?.languageUtils||new ae(N());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=P){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new O(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...N().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new le(n)}return a.translator=new ie(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();F.createInstance,F.dir,F.init,F.loadResources,F.reloadResources,F.use,F.changeLanguage,F.getFixedT;var ve=F.t;F.exists,F.setDefaultNamespace,F.hasLoadedNamespace,F.loadNamespaces,F.loadLanguages;var ye=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,be={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},xe=e=>be[e],Se=e=>e.replace(ye,xe),I={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:Se,transDefaultProps:void 0},Ce=(e={})=>{I={...I,...e}},we=()=>I,Te,Ee=e=>{Te=e},De=()=>Te,Oe={type:`3rdParty`,init(e){Ce(e.options.react),Ee(e)}},L=[`__proto__`,`constructor`,`prototype`];function ke(e,t,n){function r(e){return e&&e.indexOf(`###`)>-1?e.replace(/###/g,`.`):e}function i(){return!e||typeof e==`string`}for(var a=typeof t==`string`?t.split(`.`):[].concat(t);a.length>1;){if(i())return{};var o=r(a.shift());if(L.indexOf(o)>-1)return{};!e[o]&&n&&(e[o]=new n),e=e[o]}if(i())return{};var s=r(a.shift());return L.indexOf(s)>-1?{}:{obj:e,k:s}}function Ae(e,t,n){var r=ke(e,t,Object),i=r.obj,a=r.k;i!==void 0&&(i[a]=n)}function je(e,t){var n=ke(e,t),r=n.obj,i=n.k;if(r)return r[i]}var Me=[],Ne=Me.forEach,Pe=Me.slice;function Fe(e){return Ne.call(Pe.call(arguments,1),function(t){if(t)for(var n=0,r=Object.keys(t);n<r.length;n++){var i=r[n];L.indexOf(i)>-1||e[i]===void 0&&(e[i]=t[i])}}),e}function R(e,t){let n=t&&t.cache?t.cache:Ue,r=t&&t.serializer?t.serializer:Ve;return(t&&t.strategy?t.strategy:Re)(e,{cache:n,serializer:r})}function Ie(e){return e==null||typeof e==`number`||typeof e==`boolean`}function Le(e,t,n,r){let i=Ie(r)?r:n(r),a=t.get(i);return a===void 0&&(a=e.call(this,r),t.set(i,a)),a}function z(e,t,n){let r=Array.prototype.slice.call(arguments,3),i=n(r),a=t.get(i);return a===void 0&&(a=e.apply(this,r),t.set(i,a)),a}function B(e,t,n,r,i){return n.bind(t,e,r,i)}function Re(e,t){let n=e.length===1?Le:z;return B(e,this,n,t.cache.create(),t.serializer)}function ze(e,t){return B(e,this,z,t.cache.create(),t.serializer)}function Be(e,t){return B(e,this,Le,t.cache.create(),t.serializer)}var Ve=function(){return JSON.stringify(arguments)},He=class{constructor(){this.cache=Object.create(null)}get(e){return this.cache[e]}set(e,t){this.cache[e]=t}},Ue={create:function(){return new He}},V={variadic:ze,monadic:Be},We=/(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;function Ge(e){let t={};return e.replace(We,e=>{let n=e.length;switch(e[0]){case`G`:t.era=n===4?`long`:n===5?`narrow`:`short`;break;case`y`:t.year=n===2?`2-digit`:`numeric`;break;case`Y`:case`u`:case`U`:case`r`:throw RangeError("`Y/u/U/r` (year) patterns are not supported, use `y` instead");case`q`:case`Q`:throw RangeError("`q/Q` (quarter) patterns are not supported");case`M`:case`L`:t.month=[`numeric`,`2-digit`,`short`,`long`,`narrow`][n-1];break;case`w`:case`W`:throw RangeError("`w/W` (week) patterns are not supported");case`d`:t.day=[`numeric`,`2-digit`][n-1];break;case`D`:case`F`:case`g`:throw RangeError("`D/F/g` (day) patterns are not supported, use `d` instead");case`E`:t.weekday=n===4?`long`:n===5?`narrow`:`short`;break;case`e`:if(n<4)throw RangeError("`e..eee` (weekday) patterns are not supported");t.weekday=[`short`,`long`,`narrow`,`short`][n-3];break;case`c`:if(n<4)throw RangeError("`c..ccc` (weekday) patterns are not supported");t.weekday=[`short`,`long`,`narrow`,`short`][n-3];break;case`a`:t.hour12=!0;break;case`b`:case`B`:throw RangeError("`b/B` (period) patterns are not supported, use `a` instead");case`h`:t.hourCycle=`h12`,t.hour=[`numeric`,`2-digit`][n-1];break;case`H`:t.hourCycle=`h23`,t.hour=[`numeric`,`2-digit`][n-1];break;case`K`:t.hourCycle=`h11`,t.hour=[`numeric`,`2-digit`][n-1];break;case`k`:t.hourCycle=`h24`,t.hour=[`numeric`,`2-digit`][n-1];break;case`j`:case`J`:case`C`:throw RangeError("`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead");case`m`:t.minute=[`numeric`,`2-digit`][n-1];break;case`s`:t.second=[`numeric`,`2-digit`][n-1];break;case`S`:case`A`:throw RangeError("`S/A` (second) patterns are not supported, use `s` instead");case`z`:t.timeZoneName=n<4?`short`:`long`;break;case`Z`:case`O`:case`v`:case`V`:case`X`:case`x`:throw RangeError("`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead")}return``}),t}var Ke=/[\t-\r \x85\u200E\u200F\u2028\u2029]/i;function qe(e){if(e.length===0)throw Error(`Number skeleton cannot be empty`);let t=e.split(Ke).filter(e=>e.length>0),n=[];for(let e of t){let t=e.split(`/`);if(t.length===0)throw Error(`Invalid number skeleton`);let[r,...i]=t;for(let e of i)if(e.length===0)throw Error(`Invalid number skeleton`);n.push({stem:r,options:i})}return n}function Je(e){return e.replace(/^(.*?)-/,``)}var Ye=/^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g,Xe=/^(@+)?(\+|#+)?[rs]?$/g,Ze=/(\*)(0+)|(#+)(0+)|(0+)/g,Qe=/^(0+)$/;function $e(e){let t={};return e[e.length-1]===`r`?t.roundingPriority=`morePrecision`:e[e.length-1]===`s`&&(t.roundingPriority=`lessPrecision`),e.replace(Xe,function(e,n,r){return typeof r==`string`?r===`+`?t.minimumSignificantDigits=n.length:n[0]===`#`?t.maximumSignificantDigits=n.length:(t.minimumSignificantDigits=n.length,t.maximumSignificantDigits=n.length+(typeof r==`string`?r.length:0)):(t.minimumSignificantDigits=n.length,t.maximumSignificantDigits=n.length),``}),t}function et(e){switch(e){case`sign-auto`:return{signDisplay:`auto`};case`sign-accounting`:case`()`:return{currencySign:`accounting`};case`sign-always`:case`+!`:return{signDisplay:`always`};case`sign-accounting-always`:case`()!`:return{signDisplay:`always`,currencySign:`accounting`};case`sign-except-zero`:case`+?`:return{signDisplay:`exceptZero`};case`sign-accounting-except-zero`:case`()?`:return{signDisplay:`exceptZero`,currencySign:`accounting`};case`sign-never`:case`+_`:return{signDisplay:`never`}}}function tt(e){let t;if(e[0]===`E`&&e[1]===`E`?(t={notation:`engineering`},e=e.slice(2)):e[0]===`E`&&(t={notation:`scientific`},e=e.slice(1)),t){let n=e.slice(0,2);if(n===`+!`?(t.signDisplay=`always`,e=e.slice(2)):n===`+?`&&(t.signDisplay=`exceptZero`,e=e.slice(2)),!Qe.test(e))throw Error(`Malformed concise eng/scientific notation`);t.minimumIntegerDigits=e.length}return t}function nt(e){return et(e)||{}}function rt(e){let t={};for(let n of e){switch(n.stem){case`percent`:case`%`:t.style=`percent`;continue;case`%x100`:t.style=`percent`,t.scale=100;continue;case`currency`:t.style=`currency`,t.currency=n.options[0];continue;case`group-off`:case`,_`:t.useGrouping=!1;continue;case`precision-integer`:case`.`:t.maximumFractionDigits=0;continue;case`measure-unit`:case`unit`:t.style=`unit`,t.unit=Je(n.options[0]);continue;case`compact-short`:case`K`:t.notation=`compact`,t.compactDisplay=`short`;continue;case`compact-long`:case`KK`:t.notation=`compact`,t.compactDisplay=`long`;continue;case`scientific`:t={...t,notation:`scientific`,...n.options.reduce((e,t)=>({...e,...nt(t)}),{})};continue;case`engineering`:t={...t,notation:`engineering`,...n.options.reduce((e,t)=>({...e,...nt(t)}),{})};continue;case`notation-simple`:t.notation=`standard`;continue;case`unit-width-narrow`:t.currencyDisplay=`narrowSymbol`,t.unitDisplay=`narrow`;continue;case`unit-width-short`:t.currencyDisplay=`code`,t.unitDisplay=`short`;continue;case`unit-width-full-name`:t.currencyDisplay=`name`,t.unitDisplay=`long`;continue;case`unit-width-iso-code`:t.currencyDisplay=`symbol`;continue;case`scale`:t.scale=parseFloat(n.options[0]);continue;case`rounding-mode-floor`:t.roundingMode=`floor`;continue;case`rounding-mode-ceiling`:t.roundingMode=`ceil`;continue;case`rounding-mode-down`:t.roundingMode=`trunc`;continue;case`rounding-mode-up`:t.roundingMode=`expand`;continue;case`rounding-mode-half-even`:t.roundingMode=`halfEven`;continue;case`rounding-mode-half-down`:t.roundingMode=`halfTrunc`;continue;case`rounding-mode-half-up`:t.roundingMode=`halfExpand`;continue;case`integer-width`:if(n.options.length>1)throw RangeError(`integer-width stems only accept a single optional option`);n.options[0].replace(Ze,function(e,n,r,i,a,o){if(n)t.minimumIntegerDigits=r.length;else if(i&&a)throw Error(`We currently do not support maximum integer digits`);else if(o)throw Error(`We currently do not support exact integer digits`);return``});continue}if(Qe.test(n.stem)){t.minimumIntegerDigits=n.stem.length;continue}if(Ye.test(n.stem)){if(n.options.length>1)throw RangeError(`Fraction-precision stems only accept a single optional option`);n.stem.replace(Ye,function(e,n,r,i,a,o){return r===`*`?t.minimumFractionDigits=n.length:i&&i[0]===`#`?t.maximumFractionDigits=i.length:a&&o?(t.minimumFractionDigits=a.length,t.maximumFractionDigits=a.length+o.length):(t.minimumFractionDigits=n.length,t.maximumFractionDigits=n.length),``});let e=n.options[0];e===`w`?t={...t,trailingZeroDisplay:`stripIfInteger`}:e&&(t={...t,...$e(e)});continue}if(Xe.test(n.stem)){t={...t,...$e(n.stem)};continue}let e=et(n.stem);e&&(t={...t,...e});let r=tt(n.stem);r&&(t={...t,...r})}return t}var it=function(e){return e[e.EXPECT_ARGUMENT_CLOSING_BRACE=1]=`EXPECT_ARGUMENT_CLOSING_BRACE`,e[e.EMPTY_ARGUMENT=2]=`EMPTY_ARGUMENT`,e[e.MALFORMED_ARGUMENT=3]=`MALFORMED_ARGUMENT`,e[e.EXPECT_ARGUMENT_TYPE=4]=`EXPECT_ARGUMENT_TYPE`,e[e.INVALID_ARGUMENT_TYPE=5]=`INVALID_ARGUMENT_TYPE`,e[e.EXPECT_ARGUMENT_STYLE=6]=`EXPECT_ARGUMENT_STYLE`,e[e.INVALID_NUMBER_SKELETON=7]=`INVALID_NUMBER_SKELETON`,e[e.INVALID_DATE_TIME_SKELETON=8]=`INVALID_DATE_TIME_SKELETON`,e[e.EXPECT_NUMBER_SKELETON=9]=`EXPECT_NUMBER_SKELETON`,e[e.EXPECT_DATE_TIME_SKELETON=10]=`EXPECT_DATE_TIME_SKELETON`,e[e.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE=11]=`UNCLOSED_QUOTE_IN_ARGUMENT_STYLE`,e[e.EXPECT_SELECT_ARGUMENT_OPTIONS=12]=`EXPECT_SELECT_ARGUMENT_OPTIONS`,e[e.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE=13]=`EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE`,e[e.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE=14]=`INVALID_PLURAL_ARGUMENT_OFFSET_VALUE`,e[e.EXPECT_SELECT_ARGUMENT_SELECTOR=15]=`EXPECT_SELECT_ARGUMENT_SELECTOR`,e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR=16]=`EXPECT_PLURAL_ARGUMENT_SELECTOR`,e[e.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT=17]=`EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT`,e[e.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT=18]=`EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT`,e[e.INVALID_PLURAL_ARGUMENT_SELECTOR=19]=`INVALID_PLURAL_ARGUMENT_SELECTOR`,e[e.DUPLICATE_PLURAL_ARGUMENT_SELECTOR=20]=`DUPLICATE_PLURAL_ARGUMENT_SELECTOR`,e[e.DUPLICATE_SELECT_ARGUMENT_SELECTOR=21]=`DUPLICATE_SELECT_ARGUMENT_SELECTOR`,e[e.MISSING_OTHER_CLAUSE=22]=`MISSING_OTHER_CLAUSE`,e[e.INVALID_TAG=23]=`INVALID_TAG`,e[e.INVALID_TAG_NAME=25]=`INVALID_TAG_NAME`,e[e.UNMATCHED_CLOSING_TAG=26]=`UNMATCHED_CLOSING_TAG`,e[e.UNCLOSED_TAG=27]=`UNCLOSED_TAG`,e}({});function at(e){return e.type===0}function ot(e){return e.type===1}function st(e){return e.type===2}function ct(e){return e.type===3}function lt(e){return e.type===4}function ut(e){return e.type===5}function dt(e){return e.type===6}function ft(e){return e.type===7}function pt(e){return e.type===8}function mt(e){return!!(e&&typeof e==`object`&&e.type===0)}function H(e){return!!(e&&typeof e==`object`&&e.type===1)}var ht=/[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/,U={"001":[`H`,`h`],419:[`h`,`H`,`hB`,`hb`],AC:[`H`,`h`,`hb`,`hB`],AD:[`H`,`hB`],AE:[`h`,`hB`,`hb`,`H`],AF:[`H`,`hb`,`hB`,`h`],AG:[`h`,`hb`,`H`,`hB`],AI:[`H`,`h`,`hb`,`hB`],AL:[`h`,`H`,`hB`],AM:[`H`,`hB`],AO:[`H`,`hB`],AR:[`h`,`H`,`hB`,`hb`],AS:[`h`,`H`],AT:[`H`,`hB`],AU:[`h`,`hb`,`H`,`hB`],AW:[`H`,`hB`],AX:[`H`],AZ:[`H`,`hB`,`h`],BA:[`H`,`hB`,`h`],BB:[`h`,`hb`,`H`,`hB`],BD:[`h`,`hB`,`H`],BE:[`H`,`hB`],BF:[`H`,`hB`],BG:[`H`,`hB`,`h`],BH:[`h`,`hB`,`hb`,`H`],BI:[`H`,`h`],BJ:[`H`,`hB`],BL:[`H`,`hB`],BM:[`h`,`hb`,`H`,`hB`],BN:[`hb`,`hB`,`h`,`H`],BO:[`h`,`H`,`hB`,`hb`],BQ:[`H`],BR:[`H`,`hB`],BS:[`h`,`hb`,`H`,`hB`],BT:[`h`,`H`],BW:[`H`,`h`,`hb`,`hB`],BY:[`H`,`h`],BZ:[`H`,`h`,`hb`,`hB`],CA:[`h`,`hb`,`H`,`hB`],CC:[`H`,`h`,`hb`,`hB`],CD:[`hB`,`H`],CF:[`H`,`h`,`hB`],CG:[`H`,`hB`],CH:[`H`,`hB`,`h`],CI:[`H`,`hB`],CK:[`H`,`h`,`hb`,`hB`],CL:[`h`,`H`,`hB`,`hb`],CM:[`H`,`h`,`hB`],CN:[`H`,`hB`,`hb`,`h`],CO:[`h`,`H`,`hB`,`hb`],CP:[`H`],CR:[`h`,`H`,`hB`,`hb`],CU:[`h`,`H`,`hB`,`hb`],CV:[`H`,`hB`],CW:[`H`,`hB`],CX:[`H`,`h`,`hb`,`hB`],CY:[`h`,`H`,`hb`,`hB`],CZ:[`H`],DE:[`H`,`hB`],DG:[`H`,`h`,`hb`,`hB`],DJ:[`h`,`H`],DK:[`H`],DM:[`h`,`hb`,`H`,`hB`],DO:[`h`,`H`,`hB`,`hb`],DZ:[`h`,`hB`,`hb`,`H`],EA:[`H`,`h`,`hB`,`hb`],EC:[`h`,`H`,`hB`,`hb`],EE:[`H`,`hB`],EG:[`h`,`hB`,`hb`,`H`],EH:[`h`,`hB`,`hb`,`H`],ER:[`h`,`H`],ES:[`H`,`hB`,`h`,`hb`],ET:[`hB`,`hb`,`h`,`H`],FI:[`H`],FJ:[`h`,`hb`,`H`,`hB`],FK:[`H`,`h`,`hb`,`hB`],FM:[`h`,`hb`,`H`,`hB`],FO:[`H`,`h`],FR:[`H`,`hB`],GA:[`H`,`hB`],GB:[`H`,`h`,`hb`,`hB`],GD:[`h`,`hb`,`H`,`hB`],GE:[`H`,`hB`,`h`],GF:[`H`,`hB`],GG:[`H`,`h`,`hb`,`hB`],GH:[`h`,`H`],GI:[`H`,`h`,`hb`,`hB`],GL:[`H`,`h`],GM:[`h`,`hb`,`H`,`hB`],GN:[`H`,`hB`],GP:[`H`,`hB`],GQ:[`H`,`hB`,`h`,`hb`],GR:[`h`,`H`,`hb`,`hB`],GS:[`H`,`h`,`hb`,`hB`],GT:[`h`,`H`,`hB`,`hb`],GU:[`h`,`hb`,`H`,`hB`],GW:[`H`,`hB`],GY:[`h`,`hb`,`H`,`hB`],HK:[`h`,`hB`,`hb`,`H`],HN:[`h`,`H`,`hB`,`hb`],HR:[`H`,`hB`],HU:[`H`,`h`],IC:[`H`,`h`,`hB`,`hb`],ID:[`H`],IE:[`H`,`h`,`hb`,`hB`],IL:[`H`,`hB`],IM:[`H`,`h`,`hb`,`hB`],IN:[`h`,`H`],IO:[`H`,`h`,`hb`,`hB`],IQ:[`h`,`hB`,`hb`,`H`],IR:[`hB`,`H`],IS:[`H`],IT:[`H`,`hB`],JE:[`H`,`h`,`hb`,`hB`],JM:[`h`,`hb`,`H`,`hB`],JO:[`h`,`hB`,`hb`,`H`],JP:[`H`,`K`,`h`],KE:[`hB`,`hb`,`H`,`h`],KG:[`H`,`h`,`hB`,`hb`],KH:[`hB`,`h`,`H`,`hb`],KI:[`h`,`hb`,`H`,`hB`],KM:[`H`,`h`,`hB`,`hb`],KN:[`h`,`hb`,`H`,`hB`],KP:[`h`,`H`,`hB`,`hb`],KR:[`h`,`H`,`hB`,`hb`],KW:[`h`,`hB`,`hb`,`H`],KY:[`h`,`hb`,`H`,`hB`],KZ:[`H`,`hB`],LA:[`H`,`hb`,`hB`,`h`],LB:[`h`,`hB`,`hb`,`H`],LC:[`h`,`hb`,`H`,`hB`],LI:[`H`,`hB`,`h`],LK:[`H`,`h`,`hB`,`hb`],LR:[`h`,`hb`,`H`,`hB`],LS:[`h`,`H`],LT:[`H`,`h`,`hb`,`hB`],LU:[`H`,`h`,`hB`],LV:[`H`,`hB`,`hb`,`h`],LY:[`h`,`hB`,`hb`,`H`],MA:[`H`,`h`,`hB`,`hb`],MC:[`H`,`hB`],MD:[`H`,`hB`],ME:[`H`,`hB`,`h`],MF:[`H`,`hB`],MG:[`H`,`h`],MH:[`h`,`hb`,`H`,`hB`],MK:[`H`,`h`,`hb`,`hB`],ML:[`H`],MM:[`hB`,`hb`,`H`,`h`],MN:[`H`,`h`,`hb`,`hB`],MO:[`h`,`hB`,`hb`,`H`],MP:[`h`,`hb`,`H`,`hB`],MQ:[`H`,`hB`],MR:[`h`,`hB`,`hb`,`H`],MS:[`H`,`h`,`hb`,`hB`],MT:[`H`,`h`],MU:[`H`,`h`],MV:[`H`,`h`],MW:[`h`,`hb`,`H`,`hB`],MX:[`h`,`H`,`hB`,`hb`],MY:[`hb`,`hB`,`h`,`H`],MZ:[`H`,`hB`],NA:[`h`,`H`,`hB`,`hb`],NC:[`H`,`hB`],NE:[`H`],NF:[`H`,`h`,`hb`,`hB`],NG:[`H`,`h`,`hb`,`hB`],NI:[`h`,`H`,`hB`,`hb`],NL:[`H`,`hB`],NO:[`H`,`h`],NP:[`H`,`h`,`hB`],NR:[`H`,`h`,`hb`,`hB`],NU:[`H`,`h`,`hb`,`hB`],NZ:[`h`,`hb`,`H`,`hB`],OM:[`h`,`hB`,`hb`,`H`],PA:[`h`,`H`,`hB`,`hb`],PE:[`h`,`H`,`hB`,`hb`],PF:[`H`,`h`,`hB`],PG:[`h`,`H`],PH:[`h`,`hB`,`hb`,`H`],PK:[`h`,`hB`,`H`],PL:[`H`,`h`],PM:[`H`,`hB`],PN:[`H`,`h`,`hb`,`hB`],PR:[`h`,`H`,`hB`,`hb`],PS:[`h`,`hB`,`hb`,`H`],PT:[`H`,`hB`],PW:[`h`,`H`],PY:[`h`,`H`,`hB`,`hb`],QA:[`h`,`hB`,`hb`,`H`],RE:[`H`,`hB`],RO:[`H`,`hB`],RS:[`H`,`hB`,`h`],RU:[`H`],RW:[`H`,`h`],SA:[`h`,`hB`,`hb`,`H`],SB:[`h`,`hb`,`H`,`hB`],SC:[`H`,`h`,`hB`],SD:[`h`,`hB`,`hb`,`H`],SE:[`H`],SG:[`h`,`hb`,`H`,`hB`],SH:[`H`,`h`,`hb`,`hB`],SI:[`H`,`hB`],SJ:[`H`],SK:[`H`],SL:[`h`,`hb`,`H`,`hB`],SM:[`H`,`h`,`hB`],SN:[`H`,`h`,`hB`],SO:[`h`,`H`],SR:[`H`,`hB`],SS:[`h`,`hb`,`H`,`hB`],ST:[`H`,`hB`],SV:[`h`,`H`,`hB`,`hb`],SX:[`H`,`h`,`hb`,`hB`],SY:[`h`,`hB`,`hb`,`H`],SZ:[`h`,`hb`,`H`,`hB`],TA:[`H`,`h`,`hb`,`hB`],TC:[`h`,`hb`,`H`,`hB`],TD:[`h`,`H`,`hB`],TF:[`H`,`h`,`hB`],TG:[`H`,`hB`],TH:[`H`,`h`],TJ:[`H`,`h`],TL:[`H`,`hB`,`hb`,`h`],TM:[`H`,`h`],TN:[`h`,`hB`,`hb`,`H`],TO:[`h`,`H`],TR:[`H`,`hB`],TT:[`h`,`hb`,`H`,`hB`],TW:[`hB`,`hb`,`h`,`H`],TZ:[`hB`,`hb`,`H`,`h`],UA:[`H`,`hB`,`h`],UG:[`hB`,`hb`,`H`,`h`],UM:[`h`,`hb`,`H`,`hB`],US:[`h`,`hb`,`H`,`hB`],UY:[`h`,`H`,`hB`,`hb`],UZ:[`H`,`hB`,`h`],VA:[`H`,`h`,`hB`],VC:[`h`,`hb`,`H`,`hB`],VE:[`h`,`H`,`hB`,`hb`],VG:[`h`,`hb`,`H`,`hB`],VI:[`h`,`hb`,`H`,`hB`],VN:[`H`,`h`],VU:[`h`,`H`],WF:[`H`,`hB`],WS:[`h`,`H`],XK:[`H`,`hB`,`h`],YE:[`h`,`hB`,`hb`,`H`],YT:[`H`,`hB`],ZA:[`H`,`h`,`hb`,`hB`],ZM:[`h`,`hb`,`H`,`hB`],ZW:[`H`,`h`],"af-ZA":[`H`,`h`,`hB`,`hb`],"ar-001":[`h`,`hB`,`hb`,`H`],"ca-ES":[`H`,`h`,`hB`],"en-001":[`h`,`hb`,`H`,`hB`],"en-HK":[`h`,`hb`,`H`,`hB`],"en-IL":[`H`,`h`,`hb`,`hB`],"en-MY":[`h`,`hb`,`H`,`hB`],"es-BR":[`H`,`h`,`hB`,`hb`],"es-ES":[`H`,`h`,`hB`,`hb`],"es-GQ":[`H`,`h`,`hB`,`hb`],"fr-CA":[`H`,`h`,`hB`],"gl-ES":[`H`,`h`,`hB`],"gu-IN":[`hB`,`hb`,`h`,`H`],"hi-IN":[`hB`,`h`,`H`],"it-CH":[`H`,`h`,`hB`],"it-IT":[`H`,`h`,`hB`],"kn-IN":[`hB`,`h`,`H`],"ku-SY":[`H`,`hB`],"ml-IN":[`hB`,`h`,`H`],"mr-IN":[`hB`,`hb`,`h`,`H`],"pa-IN":[`hB`,`hb`,`h`,`H`],"ta-IN":[`hB`,`h`,`hb`,`H`],"te-IN":[`hB`,`h`,`H`],"zu-ZA":[`H`,`hB`,`hb`,`h`]};function gt(e,t){let n=``;for(let r=0;r<e.length;r++){let i=e.charAt(r);if(i===`j`){let a=0;for(;r+1<e.length&&e.charAt(r+1)===i;)a++,r++;let o=1+(a&1),s=a<2?1:3+(a>>1),c=_t(t);for((c==`H`||c==`k`)&&(s=0);s-- >0;)n+=`a`;for(;o-- >0;)n=c+n}else i===`J`?n+=`H`:n+=i}return n}function _t(e){let t=e.hourCycle;if(t===void 0&&e.hourCycles&&e.hourCycles.length&&(t=e.hourCycles[0]),t)switch(t){case`h24`:return`k`;case`h23`:return`H`;case`h12`:return`h`;case`h11`:return`K`;default:throw Error(`Invalid hourCycle`)}let n=e.language,r;return n!==`root`&&(r=e.maximize().region),(U[r||``]||U[n||``]||U[`${n}-001`]||U[`001`])[0]}var vt=RegExp(`^${ht.source}*`),yt=RegExp(`${ht.source}*$`);function W(e,t){return{start:e,end:t}}var bt=!!Object.fromEntries,xt=!!String.prototype.trimStart,St=!!String.prototype.trimEnd,Ct=bt?Object.fromEntries:function(e){let t={};for(let[n,r]of e)t[n]=r;return t},wt=xt?function(e){return e.trimStart()}:function(e){return e.replace(vt,``)},Tt=St?function(e){return e.trimEnd()}:function(e){return e.replace(yt,``)},Et=RegExp(`([^\\p{White_Space}\\p{Pattern_Syntax}]*)`,`yu`);function Dt(e,t){return Et.lastIndex=t,Et.exec(e)[1]??``}function Ot(e){if(e.length===0)return null;let t=1,n=1;for(let r=0;r<e.length;){let i=e.charCodeAt(r);switch(i){case 35:case 39:case 60:case 123:case 125:return null}if(i===10)t++,n=1,r++;else if(n++,i>=55296&&i<=56319&&r+1<e.length){let t=e.charCodeAt(r+1);r+=t>=56320&&t<=57343?2:1}else r++}return{offset:e.length,line:t,column:n}}var kt=class{constructor(e,t={}){this.message=e,this.position={offset:0,line:1,column:1},this.ignoreTag=!!t.ignoreTag,this.locale=t.locale,this.requiresOtherClause=!!t.requiresOtherClause,this.shouldParseSkeletons=!!t.shouldParseSkeletons}parse(){if(this.offset()!==0)throw Error(`parser can only be used once`);if(this.message.length>0){let e=this.message.charCodeAt(0);if(e!==35&&e!==39&&e!==60&&e!==123&&e!==125){let e=Ot(this.message);if(e){let t=this.clonePosition();return this.position=e,{val:[{type:0,value:this.message,location:W(t,this.clonePosition())}],err:null}}}}return this.parseMessage(0,``,!1)}parseMessage(e,t,n){let r=[];for(;!this.isEOF();){let i=this.char();if(i===123){let t=this.parseArgument(e,n);if(t.err)return t;r.push(t.val)}else if(i===125&&e>0)break;else if(i===35&&(t===`plural`||t===`selectordinal`)){let e=this.clonePosition();this.bump(),r.push({type:7,location:W(e,this.clonePosition())})}else if(i===60&&!this.ignoreTag&&this.peek()===47){if(n)break;return this.error(26,W(this.clonePosition(),this.clonePosition()))}else if(i===60&&!this.ignoreTag&&G(this.peek()||0)){let n=this.parseTag(e,t);if(n.err)return n;r.push(n.val)}else{let n=this.parseLiteral(e,t);if(n.err)return n;r.push(n.val)}}return{val:r,err:null}}parseTag(e,t){let n=this.clonePosition();this.bump();let r=this.parseTagName();if(this.bumpSpace(),this.bumpIf(`/>`))return{val:{type:0,value:`<${r}/>`,location:W(n,this.clonePosition())},err:null};if(this.bumpIf(`>`)){let i=this.parseMessage(e+1,t,!0);if(i.err)return i;let a=i.val,o=this.clonePosition();if(this.bumpIf(`</`)){if(this.isEOF()||!G(this.char()))return this.error(23,W(o,this.clonePosition()));let e=this.clonePosition();return r===this.parseTagName()?(this.bumpSpace(),this.bumpIf(`>`)?{val:{type:8,value:r,children:a,location:W(n,this.clonePosition())},err:null}:this.error(23,W(o,this.clonePosition()))):this.error(26,W(e,this.clonePosition()))}else return this.error(27,W(n,this.clonePosition()))}else return this.error(23,W(n,this.clonePosition()))}parseTagName(){let e=this.offset();for(this.bump();!this.isEOF()&&jt(this.char());)this.bump();return this.message.slice(e,this.offset())}parseLiteral(e,t){let n=this.clonePosition(),r=``;for(;;){let n=this.tryParseQuote(t);if(n){r+=n;continue}let i=this.tryParseUnquoted(e,t);if(i){r+=i;continue}let a=this.tryParseLeftAngleBracket();if(a){r+=a;continue}break}let i=W(n,this.clonePosition());return{val:{type:0,value:r,location:i},err:null}}tryParseLeftAngleBracket(){return!this.isEOF()&&this.char()===60&&(this.ignoreTag||!At(this.peek()||0))?(this.bump(),`<`):null}tryParseQuote(e){if(this.isEOF()||this.char()!==39)return null;switch(this.peek()){case 39:return this.bump(),this.bump(),`'`;case 123:case 60:case 62:case 125:break;case 35:if(e===`plural`||e===`selectordinal`)break;return null;default:return null}this.bump();let t=[this.char()];for(this.bump();!this.isEOF();){let e=this.char();if(e===39)if(this.peek()===39)t.push(39),this.bump();else{this.bump();break}else t.push(e);this.bump()}return String.fromCodePoint(...t)}tryParseUnquoted(e,t){if(this.isEOF())return null;let n=this.char();return n===60||n===123||n===35&&(t===`plural`||t===`selectordinal`)||n===125&&e>0?null:(this.bump(),String.fromCodePoint(n))}parseArgument(e,t){let n=this.clonePosition();if(this.bump(),this.bumpSpace(),this.isEOF())return this.error(1,W(n,this.clonePosition()));if(this.char()===125)return this.bump(),this.error(2,W(n,this.clonePosition()));let r=this.parseIdentifierIfPossible().value;if(!r)return this.error(3,W(n,this.clonePosition()));if(this.bumpSpace(),this.isEOF())return this.error(1,W(n,this.clonePosition()));switch(this.char()){case 125:return this.bump(),{val:{type:1,value:r,location:W(n,this.clonePosition())},err:null};case 44:return this.bump(),this.bumpSpace(),this.isEOF()?this.error(1,W(n,this.clonePosition())):this.parseArgumentOptions(e,t,r,n);default:return this.error(3,W(n,this.clonePosition()))}}parseIdentifierIfPossible(){let e=this.clonePosition(),t=this.offset(),n=Dt(this.message,t),r=t+n.length;return this.bumpTo(r),{value:n,location:W(e,this.clonePosition())}}parseArgumentOptions(e,t,n,r){let i=this.clonePosition(),a=this.parseIdentifierIfPossible().value,o=this.clonePosition();switch(a){case``:return this.error(4,W(i,o));case`number`:case`date`:case`time`:{this.bumpSpace();let e=null;if(this.bumpIf(`,`)){this.bumpSpace();let t=this.clonePosition(),n=this.parseSimpleArgStyleIfPossible();if(n.err)return n;let r=Tt(n.val);if(r.length===0)return this.error(6,W(this.clonePosition(),this.clonePosition()));e={style:r,styleLocation:W(t,this.clonePosition())}}let t=this.tryParseArgumentClose(r);if(t.err)return t;let i=W(r,this.clonePosition());if(e&&e.style.startsWith(`::`)){let t=wt(e.style.slice(2));if(a===`number`){let r=this.parseNumberSkeletonFromString(t,e.styleLocation);return r.err?r:{val:{type:2,value:n,location:i,style:r.val},err:null}}else{if(t.length===0)return this.error(10,i);let r=t;this.locale&&(r=gt(t,this.locale));let o={type:1,pattern:r,location:e.styleLocation,parsedOptions:this.shouldParseSkeletons?Ge(r):{}};return{val:{type:a===`date`?3:4,value:n,location:i,style:o},err:null}}}return{val:{type:a===`number`?2:a===`date`?3:4,value:n,location:i,style:e?.style??null},err:null}}case`plural`:case`selectordinal`:case`select`:{let i=this.clonePosition();if(this.bumpSpace(),!this.bumpIf(`,`))return this.error(12,W(i,{...i}));this.bumpSpace();let o=this.parseIdentifierIfPossible(),s=0;if(a!==`select`&&o.value===`offset`){if(!this.bumpIf(`:`))return this.error(13,W(this.clonePosition(),this.clonePosition()));this.bumpSpace();let e=this.tryParseDecimalInteger(13,14);if(e.err)return e;this.bumpSpace(),o=this.parseIdentifierIfPossible(),s=e.val}let c=this.tryParsePluralOrSelectOptions(e,a,t,o);if(c.err)return c;let l=this.tryParseArgumentClose(r);if(l.err)return l;let u=W(r,this.clonePosition());return a===`select`?{val:{type:5,value:n,options:Ct(c.val),location:u},err:null}:{val:{type:6,value:n,options:Ct(c.val),offset:s,pluralType:a===`plural`?`cardinal`:`ordinal`,location:u},err:null}}default:return this.error(5,W(i,o))}}tryParseArgumentClose(e){return this.isEOF()||this.char()!==125?this.error(1,W(e,this.clonePosition())):(this.bump(),{val:!0,err:null})}parseSimpleArgStyleIfPossible(){let e=0,t=this.clonePosition();for(;!this.isEOF();)switch(this.char()){case 39:{this.bump();let e=this.clonePosition();if(!this.bumpUntil(`'`))return this.error(11,W(e,this.clonePosition()));this.bump();break}case 123:e+=1,this.bump();break;case 125:if(e>0)--e;else return{val:this.message.slice(t.offset,this.offset()),err:null};break;default:this.bump();break}return{val:this.message.slice(t.offset,this.offset()),err:null}}parseNumberSkeletonFromString(e,t){let n=[];try{n=qe(e)}catch{return this.error(7,t)}return{val:{type:0,tokens:n,location:t,parsedOptions:this.shouldParseSkeletons?rt(n):{}},err:null}}tryParsePluralOrSelectOptions(e,t,n,r){let i=!1,a=[],o=new Set,{value:s,location:c}=r;for(;;){if(s.length===0){let e=this.clonePosition();if(t!==`select`&&this.bumpIf(`=`)){let t=this.tryParseDecimalInteger(16,19);if(t.err)return t;c=W(e,this.clonePosition()),s=this.message.slice(e.offset,this.offset())}else break}if(o.has(s))return this.error(t===`select`?21:20,c);s===`other`&&(i=!0),this.bumpSpace();let r=this.clonePosition();if(!this.bumpIf(`{`))return this.error(t===`select`?17:18,W(this.clonePosition(),this.clonePosition()));let l=this.parseMessage(e+1,t,n);if(l.err)return l;let u=this.tryParseArgumentClose(r);if(u.err)return u;a.push([s,{value:l.val,location:W(r,this.clonePosition())}]),o.add(s),this.bumpSpace(),{value:s,location:c}=this.parseIdentifierIfPossible()}return a.length===0?this.error(t===`select`?15:16,W(this.clonePosition(),this.clonePosition())):this.requiresOtherClause&&!i?this.error(22,W(this.clonePosition(),this.clonePosition())):{val:a,err:null}}tryParseDecimalInteger(e,t){let n=1,r=this.clonePosition();this.bumpIf(`+`)||this.bumpIf(`-`)&&(n=-1);let i=!1,a=0;for(;!this.isEOF();){let e=this.char();if(e>=48&&e<=57)i=!0,a=a*10+(e-48),this.bump();else break}let o=W(r,this.clonePosition());return i?(a*=n,Number.isSafeInteger(a)?{val:a,err:null}:this.error(t,o)):this.error(e,o)}offset(){return this.position.offset}isEOF(){return this.offset()===this.message.length}clonePosition(){return{offset:this.position.offset,line:this.position.line,column:this.position.column}}char(){let e=this.position.offset;if(e>=this.message.length)throw Error(`out of bound`);let t=this.message.codePointAt(e);if(t===void 0)throw Error(`Offset ${e} is at invalid UTF-16 code unit boundary`);return t}error(e,t){return{val:null,err:{kind:e,message:this.message,location:t}}}bump(){if(this.isEOF())return;let e=this.char();e===10?(this.position.line+=1,this.position.column=1,this.position.offset+=1):(this.position.column+=1,this.position.offset+=e<65536?1:2)}bumpIf(e){if(this.message.startsWith(e,this.offset())){for(let t=0;t<e.length;t++)this.bump();return!0}return!1}bumpUntil(e){let t=this.offset(),n=this.message.indexOf(e,t);return n>=0?(this.bumpTo(n),!0):(this.bumpTo(this.message.length),!1)}bumpTo(e){if(this.offset()>e)throw Error(`targetOffset ${e} must be greater than or equal to the current offset ${this.offset()}`);for(e=Math.min(e,this.message.length);;){let t=this.offset();if(t===e)break;if(t>e)throw Error(`targetOffset ${e} is at invalid UTF-16 code unit boundary`);if(this.bump(),this.isEOF())break}}bumpSpace(){for(;!this.isEOF()&&Mt(this.char());)this.bump()}peek(){if(this.isEOF())return null;let e=this.char(),t=this.offset();return this.message.charCodeAt(t+(e>=65536?2:1))??null}};function G(e){return e>=97&&e<=122||e>=65&&e<=90}function At(e){return G(e)||e===47}function jt(e){return e===45||e===46||e>=48&&e<=57||e===95||e>=97&&e<=122||e>=65&&e<=90||e==183||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8255&&e<=8256||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}function Mt(e){return e>=9&&e<=13||e===32||e===133||e>=8206&&e<=8207||e===8232||e===8233}function K(e){e.forEach(e=>{if(delete e.location,ut(e)||dt(e))for(let t in e.options)delete e.options[t].location,K(e.options[t].value);else st(e)&&mt(e.style)||(ct(e)||lt(e))&&H(e.style)?delete e.style.location:pt(e)&&K(e.children)})}function Nt(e,t={}){t={shouldParseSkeletons:!0,requiresOtherClause:!0,...t};let n=new kt(e,t).parse();if(n.err){let e=SyntaxError(it[n.err.kind]);throw e.location=n.err.location,e.originalMessage=n.err.message,e}return t?.captureLocation||K(n.val),n.val}var q=class extends Error{constructor(e,t,n){super(e),this.code=t,this.originalMessage=n}toString(){return`[formatjs Error: ${this.code}] ${this.message}`}},Pt=class extends q{constructor(e,t,n,r){super(`Invalid values for "${e}": "${t}". Options are "${Object.keys(n).join(`", "`)}"`,`INVALID_VALUE`,r)}},Ft=class extends q{constructor(e,t,n){super(`Value for "${e}" must be of type ${t}`,`INVALID_VALUE`,n)}},It=class extends q{constructor(e,t){super(`The intl string context variable "${e}" was not provided to the string "${t}"`,`MISSING_VALUE`,t)}};function Lt(e){return e.length<2?e:e.reduce((e,t)=>{let n=e[e.length-1];return!n||n.type!==0||t.type!==0?e.push(t):n.value+=t.value,e},[])}function Rt(e){return typeof e==`function`}function J(e,t,n,r,i,a,o){if(e.length===1&&at(e[0]))return[{type:0,value:e[0].value}];let s=[];for(let c of e){if(at(c)){s.push({type:0,value:c.value});continue}if(ft(c)){typeof a==`number`&&s.push({type:0,value:n.getNumberFormat(t).format(a)});continue}let{value:e}=c;if(!(i&&e in i))throw new It(e,o);let l=i[e];if(ot(c)){(!l||typeof l==`string`||typeof l==`number`||typeof l==`bigint`)&&(l=typeof l==`string`||typeof l==`number`||typeof l==`bigint`?String(l):``),s.push({type:typeof l==`string`?0:1,value:l});continue}if(ct(c)){let e=typeof c.style==`string`?r.date[c.style]:H(c.style)?c.style.parsedOptions:void 0;s.push({type:0,value:n.getDateTimeFormat(t,e).format(l)});continue}if(lt(c)){let e=typeof c.style==`string`?r.time[c.style]:H(c.style)?c.style.parsedOptions:r.time.medium;s.push({type:0,value:n.getDateTimeFormat(t,e).format(l)});continue}if(st(c)){let e=typeof c.style==`string`?r.number[c.style]:mt(c.style)?c.style.parsedOptions:void 0;if(e&&e.scale){let t=e.scale||1;if(typeof l==`bigint`){if(!Number.isInteger(t))throw TypeError(`Cannot apply fractional scale ${t} to bigint value. Scale must be an integer when formatting bigint.`);l*=BigInt(t)}else l*=t}s.push({type:0,value:n.getNumberFormat(t,e).format(l)});continue}if(pt(c)){let{children:e,value:l}=c,u=i[l];if(!Rt(u))throw new Ft(l,`function`,o);let d=u(J(e,t,n,r,i,a).map(e=>e.value));Array.isArray(d)||(d=[d]),s.push(...d.map(e=>({type:typeof e==`string`?0:1,value:e})))}if(ut(c)){let e=l,a=(Object.prototype.hasOwnProperty.call(c.options,e)?c.options[e]:void 0)||c.options.other;if(!a)throw new Pt(c.value,l,Object.keys(c.options),o);s.push(...J(a.value,t,n,r,i));continue}if(dt(c)){let e=`=${l}`,a=Object.prototype.hasOwnProperty.call(c.options,e)?c.options[e]:void 0;if(!a){if(!Intl.PluralRules)throw new q(`Intl.PluralRules is not available in this environment.
|
|
2
2
|
Try polyfilling it using "@formatjs/intl-pluralrules"
|
|
3
3
|
`,`MISSING_INTL_API`,o);let e=typeof l==`bigint`?Number(l):l,r=n.getPluralRules(t,{type:c.pluralType}).select(e-(c.offset||0));a=(Object.prototype.hasOwnProperty.call(c.options,r)?c.options[r]:void 0)||c.options.other}if(!a)throw new Pt(c.value,l,Object.keys(c.options),o);let u=typeof l==`bigint`?Number(l):l;s.push(...J(a.value,t,n,r,i,u-(c.offset||0)));continue}}return Lt(s)}function zt(e,t){return t?{...e,...t,...Object.keys(e).reduce((n,r)=>(n[r]={...e[r],...t[r]},n),{})}:e}function Bt(e,t){return t?Object.keys(e).reduce((n,r)=>(n[r]=zt(e[r],t[r]),n),{...e}):e}function Y(e){return{create(){return{get(t){return e[t]},set(t,n){e[t]=n}}}}}function Vt(e={number:{},dateTime:{},pluralRules:{}}){return{getNumberFormat:R((...e)=>new Intl.NumberFormat(...e),{cache:Y(e.number),strategy:V.variadic}),getDateTimeFormat:R((...e)=>new Intl.DateTimeFormat(...e),{cache:Y(e.dateTime),strategy:V.variadic}),getPluralRules:R((...e)=>new Intl.PluralRules(...e),{cache:Y(e.pluralRules),strategy:V.variadic})}}var Ht=class e{constructor(t,n=e.defaultLocale,r,i){if(this.formatterCache={number:{},dateTime:{},pluralRules:{}},this.format=e=>{let t=this.formatToParts(e);if(t.length===1)return t[0].value;let n=t.reduce((e,t)=>(!e.length||t.type!==0||typeof e[e.length-1]!=`string`?e.push(t.value):e[e.length-1]+=t.value,e),[]);return n.length<=1?n[0]||``:n},this.formatToParts=e=>J(this.ast,this.locales,this.formatters,this.formats,e,void 0,this.message),this.resolvedOptions=()=>({locale:this.resolvedLocale?.toString()||Intl.NumberFormat.supportedLocalesOf(this.locales)[0]}),this.getAst=()=>this.ast,this.locales=n,this.resolvedLocale=e.resolveLocale(n),typeof t==`string`){if(this.message=t,!e.__parse)throw TypeError("IntlMessageFormat.__parse must be set to process `message` of type `string`");let{...n}=i||{};this.ast=e.__parse(t,{...n,locale:this.resolvedLocale})}else this.ast=t;if(!Array.isArray(this.ast))throw TypeError(`A message must be provided as a String or AST.`);this.formats=Bt(e.formats,r),this.formatters=i&&i.formatters||Vt(this.formatterCache)}static{this.memoizedDefaultLocale=null}static get defaultLocale(){return e.memoizedDefaultLocale||=new Intl.NumberFormat().resolvedOptions().locale,e.memoizedDefaultLocale}static{this.resolveLocale=e=>{if(Intl.Locale===void 0)return;let t=Intl.NumberFormat.supportedLocalesOf(e);return t.length>0?new Intl.Locale(t[0]):new Intl.Locale(typeof e==`string`?e:e[0])}}static{this.__parse=Nt}static{this.formats={number:{integer:{maximumFractionDigits:0},currency:{style:`currency`},percent:{style:`percent`}},date:{short:{month:`numeric`,day:`numeric`,year:`2-digit`},medium:{month:`short`,day:`numeric`,year:`numeric`},long:{month:`long`,day:`numeric`,year:`numeric`},full:{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`}},time:{short:{hour:`numeric`,minute:`numeric`},medium:{hour:`numeric`,minute:`numeric`,second:`numeric`},long:{hour:`numeric`,minute:`numeric`,second:`numeric`,timeZoneName:`short`},full:{hour:`numeric`,minute:`numeric`,second:`numeric`,timeZoneName:`short`}}}}};function Ut(e,t){return Jt(e)||qt(e,t)||Gt(e,t)||Wt()}function Wt(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
4
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Gt(e,t){if(e){if(typeof e==`string`)return Kt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Kt(e,t)}}function Kt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function qt(e,t){if(!(typeof Symbol>`u`||!(Symbol.iterator in Object(e)))){var n=[],r=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),s;!(r=(s=o.next()).done)&&(n.push(s.value),!(t&&n.length===t));r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return!=null&&o.return()}finally{if(i)throw a}}return n}}function Jt(e){if(Array.isArray(e))return e}function X(e){"@babel/helpers - typeof";return X=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},X(e)}function Yt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Xt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Yt(Object(n),!0).forEach(function(t){Zt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Zt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qt(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function $t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function en(e,t,n){return t&&$t(e.prototype,t),n&&$t(e,n),e}function tn(){return{memoize:!0,memoizeFallback:!1,bindI18n:``,bindI18nStore:``,parseErrorHandler:function(e,t,n,r){return n},parseLngForICU:function(e){return e},escapeVariables:!1}}var nn=function(){function e(t){Qt(this,e),this.type=`i18nFormat`,this.mem={},this.init(null,t)}return en(e,[{key:`init`,value:function(e,t){var n=this,r=e&&e.options&&e.options.i18nFormat||{};if(this.options=Fe(r,t,this.options||{},tn()),this.formats=this.options.formats,e){var i=this.options,a=i.bindI18n,o=i.bindI18nStore,s=i.memoize;e.IntlMessageFormat=Ht,e.ICU=this,s&&(a&&e.on(a,function(){return n.clearCache()}),o&&e.store.on(o,function(){return n.clearCache()}))}}},{key:`addUserDefinedFormats`,value:function(e){this.formats=this.formats?Xt(Xt({},this.formats),e):e}},{key:`parse`,value:function(e,t,n,r,i,a){var o=a&&a.resolved&&a.resolved.res,s=this.options.memoize&&`${n}.${r}.${i.replace(/\./g,`###`)}`,c;this.options.memoize&&(c=je(this.mem,s));try{return c||(c=new Ht(e,this.options.parseLngForICU(n),this.formats,{ignoreTag:!0}),this.options.memoize&&(this.options.memoizeFallback||!a||o)&&Ae(this.mem,s,c)),c.format(this.escapeVariableValues(t))}catch(n){return this.options.parseErrorHandler(n,i,e,t)}}},{key:`addLookupKeys`,value:function(e,t,n,r,i){return e}},{key:`clearCache`,value:function(){this.mem={}}},{key:`escapeVariableValues`,value:function(e){if(!this.options.escapeVariables||!e||X(e)!==`object`)return e;for(var t={},n=0,r=Object.entries(e);n<r.length;n++){var i=Ut(r[n],2),a=i[0],o=i[1];typeof o==`string`?t[a]=o.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`):t[a]=o}return t}}]),e}();nn.type=`i18nFormat`;var rn={authWaitSpinner:{loading:`Loading`},signupScreen:{headlineLead:`Meet your new`,headlineRoles:{personalIntelligence:`Personal Intelligence`,softwareEngineer:`Software Engineer`,financeOps:`Finance Ops`,householdManager:`Household Manager`,gtmEngineer:`GTM Engineer`,productLead:`Product Lead`},subtitle:`The most powerful assistant that can handle your work and life admin tasks.`,continue:`Continue`,downloadMac:`Download for macOS`,haveAccountPrompt:`Already have an account? <signIn>Sign in</signIn>`},accountPage:{loading:`Loading...`,welcomeTitle:`Welcome to Vellum`,welcomeSubtitle:`Sign in to get started.`,signIn:`Sign in`,signedInTitle:`Welcome!`,signedInTitleNamed:`Welcome, {name}!`,signedInSubtitle:`You are signed in.`,goToAssistant:`Go to your assistant`,signOut:`Sign out`},loginPage:{signUp:`Sign up`,signIn:`Sign in`},logoutPage:{title:`Signing out...`},platformLoopbackPage:{backToWelcome:`Back to Welcome`,completing:`Completing login...`},oauthComplete:{errorCode:`Error: {code}`},providerCallbackPage:{signupClosedTitle:`Signups are currently closed`,signupClosedSubtitle:`Join the community to request access or learn when signups reopen.`,joinCommunity:`Join the community`,backToSignIn:`Back to sign in`,failedTitle:`Authentication failed`,failedSubtitle:`Something went wrong during social sign-in. Please try again or use a different method.`,completingTitle:`Completing sign-in...`,completingSubtitle:`Please wait while we finish authenticating you.`},providerSignupPage:{completingTitle:`Completing signup...`,completingSubtitle:`Please wait while we load your information.`,headingLine1:`Almost there,`,headingLine2:`one more detail`,firstNameQuestion:`What should I call you?`,firstNamePlaceholder:`First name`,lastNameQuestion:`And your last name?`,lastNamePlaceholder:`Last name`,roleQuestion:`Your role`,rolePlaceholder:`e.g. Software Engineer`,submitting:`Setting up…`,submit:`Continue →`,completeAccountTitle:`Complete your account`,completeAccountSubtitle:`We need a few more details to finish setting up your account.`,backToSignIn:`← Back to sign in`,emailPlaceholder:`Email`,usernamePlaceholder:`Username`,completeSignup:`Complete signup`,completingSignup:`Completing...`},authErrors:{genericFailure:`Something went wrong. Please try again.`,signupClosed:`Sign-ups are currently closed. Visit {community} to request access.`,providerSignup:`No Vellum account is linked to that login yet. Sign up first, then sign in.`,loginIncomplete:`Your account needs another step to finish signing in. Please sign in on the web, then try again.`,desktopUpdateRequired:`This version of the Vellum desktop app can't sign in. Update the app, then try again.`,loopbackStateMismatch:`Login failed: state mismatch. Please try again.`,loopbackNoToken:`Login failed: no session token received. Please try again.`,loopbackInvalidToken:`Login failed: invalid session token.`}},an={assistantChannelsList:{drawerTitle:`Channels`,disconnectTitle:`Disconnect {channel}?`,disconnectConfirm:`Disconnect`,confirmFallback:`Confirm`},channelAdapterList:{pluginChannelAria:`{channel}, from a plugin`},connectionCard:{connected:`Connected`,disconnecting:`Disconnecting…`,disconnect:`Disconnect`},slackChannelCard:{setupHeading:`Slack setup`},channelPanel:{incompleteTitle:`{channel} isn't working yet`,disconnectedTitle:`{channel} isn't connected`,incompleteDescription:`{channel} is set up but not delivering messages yet. Your assistant can pick up where setup left off and tell you what is wrong.`,opening:`Opening…`,finishSetup:`Finish setup with your assistant`,setUp:`Set up`,connectManually:`or connect manually`},pluginChannelPanel:{openPluginPage:`Open plugin page`,ingressLoading:`Checking who can reach {channel}…`,ingressUnsupported:`This assistant's gateway does not report ingress approvals, so there is nothing to decide here.`,ingressForbidden:`Only this assistant's guardian can see or change ingress approvals.`,ingressUnreadable:`Could not read the ingress approval for {channel}.`,ingressNone:`The gateway sees no ingress declaration for {channel}, so there is nothing to approve yet.`,ingressApprovedTag:`Ingress approved`,ingressPendingTag:`Ingress awaiting approval`,approvedAddresses:`{channel} receives messages at these addresses:`,pendingAddresses:`{channel} asks to receive messages at these addresses. Until you approve, deliveries to them are refused:`,ungovernedAddresses:`These addresses are open whatever you decide, because only Vellum can reach them:`,deliversInbound:`What arrives here becomes a message to your assistant, not just a callback {channel} receives. Who gets through is still decided by who you allow to message it.`,revokeIngress:`Revoke ingress`,approveIngress:`Approve ingress`},channelTrustFloor:{heading:`Who can message {assistant}`,loading:`Loading…`,loadFailed:`Couldn’t load this setting. Try reopening this page.`,selectAria:`Who can message {assistant}`,trustedContactsNotice:`People you haven’t verified yet (even teammates in the same channel) can’t get through: {assistant} lets them know they need to be verified and notifies you. You can verify people ahead of time in Contacts.`},slackChannelTypeDefaults:{heading:`Default access`,subtitle:`How much {assistant} does on its own, by conversation type. Individual channels can override this below, and <trustRules>Trust Rules</trustRules> fine-tune when it asks.`,bucketAria:`Default Assistant Access for {bucket}`},tierPicker:{defaultSuffix:`default`,defaultPlaceholder:`Default`},slackChannelTierLegend:{defaultMarker:`· default`},slackChannelSection:{overridesLoadFailed:`Couldn’t load access settings. These controls stay disabled until they load. Try reopening this page.`,perChannelOverrides:`Per-channel overrides`},slackThreadBehavior:{heading:`Thread Behavior`,selectAria:`Slack thread behavior`,mentionsOnly:`Mentions only`,mentionsOnlyHelp:`Bot only responds when @mentioned.`,followThreads:`Follow threads after first mention`,followThreadsHelp:`After an @mention in a thread, bot listens to the rest of that thread.`},slackChannelList:{presenceHint:`Add with <invite>/invite {handle}</invite> or remove with <remove>/remove {handle}</remove> in that Slack channel. Only channels {assistant} is in appear here.`,loading:`Loading…`,loadFailed:`Couldn’t load channels. Try reopening this page.`,emptyTitle:`No channels yet`,searchPlaceholder:`Search channels`,searchAria:`Search channels`,filterGroupAria:`Filter channels by type`,noMatches:`No channels match.`,accessAria:`Assistant Access in {channel}`,filterAll:`{count, plural, one {All (#)} other {All (#)}}`,filterPublic:`{count, plural, one {Public (#)} other {Public (#)}}`,filterPrivate:`{count, plural, one {Private (#)} other {Private (#)}}`},twilioCredentialEntry:{accountSid:`Account SID`,authToken:`Auth Token`,authTokenPlaceholder:`Twilio auth token`,saving:`Saving…`,save:`Save`},channelMeta:{slack:{label:`Slack`,disconnectMessage:`This clears the stored Slack bot and app tokens for this assistant. You can reconnect later.`},telegram:{label:`Telegram`,disconnectMessage:`This clears the stored Telegram bot token for this assistant. You can reconnect later.`,disconnectedPitch:`Connect a Telegram bot so {assistant} can send and receive messages on Telegram.`},phone:{label:`Phone Calling`,disconnectMessage:`This clears the stored Twilio credentials for this assistant. You can reconnect later.`,disconnectedPitch:`Connect your Twilio account so {assistant} can make and answer phone calls.`}}},on={actions:{save:`Save`,saving:`Saving…`,merge:`Merge…`,merging:`Merging…`,delete:`Delete`,deleting:`Deleting…`,connect:`Connect`,connecting:`Connecting…`,disconnect:`Disconnect`,disconnecting:`Disconnecting…`,cancel:`Cancel`,back:`Back`,verify:`Verify`,verifying:`Verifying…`,revoke:`Revoke`},channelType:{slack:`Slack`,telegram:`Telegram`,whatsapp:`WhatsApp`,a2a:`A2A`,phone:`Phone`,email:`Email`},contact:{nameLabel:`Name`,notesLabel:`Notes`,draftName:`New Contact`,interactions:`{count, plural, one {# interaction} other {# interactions}}`,mergeBlockedNoCandidates:`No other contacts available to merge`,mergeBlockedUnsaved:`Save your changes before merging`},contactsPage:{title:`Contacts`,mergeSucceeded:`Contacts merged`,mergeFailed:`Failed to merge contacts`,createFailed:`Failed to create contact`,deleteFailed:`Failed to delete contact`,saveFailed:`Failed to save contact`,verifyFailed:`Failed to verify channel`,rosterLoadFailed:`Couldn’t load the workspace roster. Check the Slack connection and try again.`,emptyBody:`Select a contact`},contactsList:{heading:`Entries`,addAriaLabel:`Add contact`,searchPlaceholder:`Search Contacts`,noMatches:`No matching contacts`,add:`Add Contact`,verified:`Verified`,unverified:`Unverified`,you:`You`,youNamed:`{name} (You)`,assistantFallback:`Your Assistant`},contactDetailView:{namePlaceholder:`Give this human a name`,notesPlaceholder:`Optional notes about the human which AI will take into account`,mergeBlockedUnsavedDraft:`Save this contact before merging`,delete:`Delete Contact`,linkedAccountsTitle:`Linked accounts`,linkedAccountsSubtitle:`Where the assistant recognizes this contact. Link accounts you know, invite the ones you don't.`,deleteConfirmTitle:`Delete {name}?`,deleteConfirmMessage:`This will permanently delete this contact and all their channels. This action cannot be undone.`},guardianDetailView:{namePlaceholder:`Your name`,notesPlaceholder:`Notes about yourself which AI will take into account`,channelsTitle:`Channels`,channelsSubtitle:`Once verified, your assistant will recognize you when you message from these channels.`,setupLabel:`Verify me`},assistantChannelsDetail:{title:`{name} (Your Assistant)`,channelsTitle:`Channels`,channelsSubtitle:`Where {name} can be reached.`},assistantContactChannels:{disconnectConfirmTitle:`Disconnect {channel}?`,disconnectConfirmMessage:`This clears the stored credentials for this channel. You can reconnect later.`},accountLink:{linked:`Linked as @{username}`,linkFailed:`Failed to link account`},connectPage:{invalidTitle:`Invalid invite link`,invalidBody:`The link you followed is missing required parameters and cannot be used.`,goToContacts:`Go to Contacts`,title:`Connect assistants`,body:`Accepting this link will create a trusted A2A connection between your assistant and the sender's.`,alreadyConnected:`Already connected`,connected:`Connected!`,errorExpired:`This invite link has expired or already been used.`,errorAlreadyRedeemed:`This invite has already been claimed by someone else.`,errorSenderNotFound:`The sender's assistant could not be found.`,errorNotPlatformManaged:`A2A invite links are only supported for platform-hosted assistants.`,errorGeneric:`Something went wrong. Please try again.`},channelStatus:{connected:`Connected`,verified:`Verified`},contactChannelsSection:{verifyConfirmTitle:`Verify {channel}`,verifyConfirmMessageContact:`This will mark this contact's {channel} channel as verified. Your assistant will recognize them when they reach out from it.`,verifyConfirmMessageGuardian:`This will mark your {channel} channel as verified. Your assistant will recognize you when you reach out from it.`,revokeConfirmTitle:`Revoke {channel}`,revokeConfirmMessage:`This will disconnect the verified channel. The contact will need to re-verify to use this channel again.`,linkAccount:`Link account`,setupDefault:`Invite`},linkAccountDialog:{title:`Link {channel} account`,description:`Search your {channel} workspace and pick <contact>{name}</contact>’s account.`,searchPlaceholder:`Search by name or @handle`,searchAriaLabel:`Search {channel} workspace accounts`,loading:`Loading workspace members…`,noMembers:`No workspace members found.`,noMatches:`No members match.`,linking:`Linking…`,guardianLinkNote:`Picking marks this account as <emphasis>guardian-linked</emphasis>: you vouch for the identity, no handshake needed.`,inviteInstead:`Or send an invite instead`},contactMergeDialog:{titlePicked:`Merge "{donor}" into {survivor}?`,titlePicking:`Merge another contact into {survivor}`,descriptionPicked:`Channels and notes from the merged contact will move over. The merged contact will be deleted.`,descriptionPicking:`The contact you pick will be deleted. Its channels and notes will be added to this one.`,confirm:`Merge`,searchPlaceholder:`Search contacts`,listAriaLabel:`Select a contact to merge`,empty:`No other contacts available to merge.`,donorDeleted:`<donor>“{donor}”</donor> will be deleted.`,channelsMoved:`{count, plural, =0 {No new channels will move to {survivor}.} one {# channel will move to {survivor}: {channels}.} other {# channels will move to {survivor}: {channels}.}}`,duplicatesSkipped:`{count, plural, one {# duplicate channel already on {survivor} (skipped).} other {# duplicate channels already on {survivor} (skipped).}}`,notesAppended:`Notes from the merged contact will be appended.`,irreversible:`This cannot be undone.`},survivorName:{you:`you`,youNamed:`{name} (you)`,thisContact:`this contact`}},sn={credentialEntry:{checkingTitle:`Checking link`,checkingBody:`Looking up this credential request.`,savedTitle:`Credential saved`,savedBody:`You can close this tab and return to your conversation, and the assistant can use the credential right away. The value can't be viewed again.`,invalidTitle:`Link not valid`,invalidBody:`This credential link isn't valid. Check that the full link was copied, or ask for a new one.`,expiredTitle:`Link expired`,expiredBody:`This credential link has expired. Links only work for a short time, so ask for a new one and enter the value again.`,usedTitle:`Link already used`,usedBody:`This credential link has already been used. Each link works exactly once, so ask for a new one if the value still needs to be provided.`,storeFailedTitle:`Link no longer valid`,storeFailedBody:`The assistant could not store the credential, and for safety this one-time link cannot be reused. Ask for a new link and try again there.`,errorTitle:`Something went wrong`,errorBody:`The credential request couldn't be loaded. Refresh the page to try again.`,heading:`Provide a credential`,oneTimeEntry:`one-time entry`,instructions:`Enter the secret value below. It is stored encrypted on the assistant, is never shown again, and this link stops working as soon as it's used.`,submit:`Submit`,expiresIn:`Expires in {remaining} ({time}).`,valueLabel:`Secret value`,valuePlaceholder:`Enter the secret value`}},cn={actions:{markAsRead:`Mark as read`,markAsUnread:`Mark as unread`,restore:`Restore`,dismiss:`Dismiss`,goToThread:`Go to thread`,goToConversation:`Go to Conversation`,goToConvo:`Go to Convo`,viewSchedule:`View schedule`,viewSkill:`View skill`,markAllAsRead:`Mark all as read`,clearAll:`Clear all`},category:{all:`All`,security:`Security`,email:`Email`,scheduling:`Scheduling`,background:`Background`,system:`System`},homeRecapRow:{actionsTitle:`Update Actions`},homeTopHeader:{title:`Activity`},homeFeedFilterBar:{ariaLabel:`Filter notifications`},homeFeedList:{today:`Today`,yesterday:`Yesterday`,older:`Older`,noMatches:`No items match the selected filter.`,emptyTitle:`No notifications yet`,emptyBody:`Updates and activity from your assistant will appear here.`,earlier:`Earlier ({count, number})`,dismissed:`Dismissed ({count, number})`},homePage:{loadFailed:`Couldn't load home feed.`,loadFailedDetail:`Couldn't load home feed: {message}`},homeDetailPanel:{back:`Back`,heading:`Details`,close:`Close`,closeAriaLabel:`Close detail panel`,untitled:`Notification`},homeToolPermissionCard:{missingScopes:`Missing scopes`,status:{revoked:`Revoked`,expired:`Expired`,missingScopes:`Missing scopes`,missingToken:`Missing token`,pingFailed:`Ping failed`,unreachable:`Unreachable`}},notificationsBell:{ariaLabel:`Notifications`,ariaLabelUnread:`Notifications (unread)`,heading:`Notifications`,loadFailed:`Couldn't load notifications.`,empty:`No notifications yet.`,actionFailed:`Couldn't start that conversation. Try again.`},notificationsBellDetail:{back:`Back to notifications`}},ln={libraryEmptyState:{heading:`Your library is empty`,body:`Ask your assistant to build something, or import a shared app`,newConversation:`New Conversation`,separator:`or`,importFile:`Import .vellum File`},libraryView:{importFailed:`Failed to import app`,loadingAria:`Loading apps`,retry:`Retry`,import:`Import`,searchPlaceholder:`Search your library`,noMatches:`No apps or documents matched “{query}”`,pinned:`Pinned`,recents:`Recents`,documents:`Documents`},libraryAppCard:{exported:`App exported`,shareFailed:`Failed to share app`,actionsTitle:`Options for {appName}`,unpin:`Unpin`,pin:`Pin`,share:`Share`,shareSub:`Export as .vellum file`,deployed:`Deployed to Vercel`,copyLink:`Copy link`,redeploy:`Redeploy`,redeploySub:`Publish the current version`,deploy:`Deploy to Vercel`,deploySub:`Publish as a static page`,delete:`Delete`},libraryDetailPage:{backToLibrary:`Back to Library`}},un={errorRetryRow:{retrying:`Retrying…`,retry:`Retry`},emailsTab:{inbound:`Inbound`,outbound:`Outbound`,noSubject:`(no subject)`,addressesLoadFailed:`Couldn't load email addresses.`,noAddress:`No email address registered yet.`,setUpLink:`Set one up in AI Settings, Email.`,totals:`Totals`,sentToday:`Sent today`,dailyLimitSub:`of {limit, number} daily limit`,receivedToday:`Received today`,sentThisMonth:`Sent this month`,receivedThisMonth:`Received this month`,recentEmails:`Recent Emails`,loading:`Loading…`,emailsLoadFailed:`Couldn't load recent emails.`,noEmails:`No emails yet.`},systemEventsTab:{longSleep:`Long sleep`,hideDetails:`Hide details`,showDetails:`Show details`,intro:`Lifecycle events for your assistant from the last {days, plural, one {# day} other {# days}}, newest first.`,loading:`Loading system events...`,loadFailed:`Failed to load system events. Please refresh and try again.`,empty:`No system events recorded in the last {days, plural, one {# day} other {# days}}.`,loadingOlder:`Loading older events...`,loadOlder:`Load older events`},emailsPage:{platformLoginNotice:`Log in to the Vellum platform to view emails.`},systemEventsPage:{platformLoginNotice:`Log in to the Vellum platform to view system events.`,notAvailable:`System events aren't available for the current assistant.`}},dn={applyPersonalityUpdate:{conversationTitle:`Updating personality`},applyRename:{conversationTitle:`Updating name`},assistantNameEditor:{greeting:`Hi, I’m {name}`,renamingInProgressAriaLabel:`Renaming in progress`},categorySidebar:{all:`All`,skillCategoriesAriaLabel:`Skill categories`},conceptDetailPanel:{askAboutThis:`Ask about this`,askPrompt:`Tell me what you remember about "{title}" and how it connects to the rest of what you know.`,backAriaLabel:`Back`,closeAriaLabel:`Close`,connectionCount:`{count, plural, one {# connection} other {# connections}}`,emptyContent:`This concept doesn't have written content yet. It exists as a link in the graph, but its page is empty.`,loadError:`Couldn't load this concept. Try again in a moment.`,readFullNote:`Read full note`,refine:`Refine`,refinePrompt:`I want to refine what you remember about "{title}". Ask me what's off and we'll correct it together.`,showLess:`Show less`,trailAriaLabel:`Concept trail`,updated:`Updated {date}`,wiredTo:`Wired to`},conceptGraphConstants:{nodeKind:{capability:`Capability`,concept:`Concept`,other:`Other`,pending:`Pending`,skill:`Skill`}},conceptGraphIntroBanner:{description:`Every idea it learns, and the links it draws between them, shows up here. The map grows and rearranges itself as you talk, so the more you share, the richer it gets.`,dismissAriaLabel:`Dismiss`,title:`This is your assistant's mind`},conceptGraphLegend:{coloredByTheme:`Colored by theme`,learned:`Learned`,link:`Link`,moreThemes:`{count, plural, one {+# more} other {+# more}}`},conceptGraphView:{clearSearchAriaLabel:`Clear search`,dragToRotateHint:`drag to rotate · scroll to zoom`,emptyDetail:`As your assistant learns and links ideas, they'll appear here as a living map of its memory.`,emptyTitle:`No concepts yet`,enterFullscreenAriaLabel:`Enter fullscreen`,exitFullscreenAriaLabel:`Exit fullscreen`,loadErrorDetail:`Something went wrong fetching your assistant's memory. Try again in a moment.`,loadErrorTitle:`Couldn't load the memory graph`,resetViewAriaLabel:`Reset view`,searchConceptsAriaLabel:`Search concepts`,searchConceptsPlaceholder:`Search concepts…`,truncatedNotice:`{count, plural, one {Showing the # most-connected concept} other {Showing the # most-connected concepts}}`,zoomInAriaLabel:`Zoom in`,zoomOutAriaLabel:`Zoom out`},createMemoryModal:{cancel:`Cancel`,contentLabel:`What should I remember?`,contentPlaceholder:`e.g. I prefer concise, bulleted summaries.`,create:`Create memory`,createError:`Failed to create memory.`,creating:`Creating…`,helperText:`It lands on the map right away, then settles into a concept as it's filed.`,savedFoundToast:`Got it. Taking you to it.`,savedPendingToast:`Got it. It's on your map while I file it away.`,saveError:`Couldn't save that memory.`,title:`New memory`},getMemoryGraph:{failureMessage:`Failed to load the memory graph.`},getMemoryGraphNode:{failureMessage:`Failed to load this concept.`},identityOverview:{cardHoverLine:{channels:`All the places you can reach me`,contacts:`The people I know and trust`,library:`The apps and docs I've made for you`,memory:`Everything I remember`,personality:`Go ahead, tweak my soul`,schedules:`What I do on repeat`,superpowers:`Everything I know how to do`,workspace:`All the files that power me`},defaultAssistantName:`Assistant`,memoryCount:`{count, plural, one {# memory} other {# memories}}`,memoryCountLabel:`{count, plural, one {memory} other {memories}}`,renameErrorToast:`The rename didn't go through. Please try again.`,renameSuccessToast:`Say hi to {newName}!`,scheduleCadence:`{cadence} · next {nextRun}`,updateAvatarAndName:`Update avatar and name`,viewMoreSchedules:`{count, plural, one {View # more…} other {View # more…}}`},identitySections:{channels:{description:`Where I listen`,label:`Channels`},contacts:{description:`People I know`,label:`Contacts`},library:{description:`My apps & docs`,label:`Library`},memory:{description:`What I remember`,label:`Memory`},personality:{description:`Tune how I talk`,label:`Personality`},schedules:{description:`My routines`,label:`Schedules`},superpowers:{description:`What I can do`,label:`My Superpowers`},workspace:{description:`My files`,label:`Workspace`}},installSkill:{failureMessage:`Failed to install skill.`},intelligenceLayout:{backToAriaLabel:`Back to {name}`,backToTitle:`Back to {name}`},listConceptPages:{failureMessage:`Failed to load concept pages.`},memoryFormat:{justNow:`just now`},memoryPage:{createMemory:`Create memory`},memoryTypes:{sourceType:{direct:`Told directly`,inferred:`Inferred`,observed:`Observed`,toldByOther:`Told by other`}},memoryUpgradePrompt:{memorySettings:`Memory settings`,tryAgain:`Try again`,turnMemoryOn:`Turn memory on`,upgradeMemory:`Upgrade memory`},personalityAxes:{companionCoworker:{left:`Companion`,right:`Coworker`},executeCollaborate:{left:`Independent`,right:`Collaborative`},genzBoomer:{left:`Gen Z`,right:`Baby Boomer`},playfulSerious:{left:`Playful`,right:`Serious`},politeUnfiltered:{left:`Polite`,right:`Unfiltered`}},personalityPage:{back:`Back`,subtitle:`Slide the dials, then hit update, I’ll rewrite myself to match.`,title:`Shape my personality`,updateErrorToast:`The personality update didn't go through. Please try again.`,updatePersonality:`Update personality`,updateSuccessToast:`Personality updated. Go say hi!`,updatingPersonality:`Updating {name}'s personality…`},personalitySignature:{ariaLabel:`Personality: {summary}`,axisBalanced:`{left} and {right} balanced`,axisLean:`{percent}% {label}`},personalitySliderRow:{rangeAriaLabel:`{left} to {right}`},pluginConstants:{installError:`Failed to install plugin. Please try again.`,removeConfirmMessage:`Remove "{name}" from this assistant?`,removeError:`Failed to remove plugin. Please try again.`,riskyUpgradeConfirmLabel:`Upgrade anyway`,riskyUpgradeConfirmMessage:`"{name}" has local edits that will be overwritten by the upgrade. Continue?`,toggleError:`Failed to update plugin. Please try again.`,upgradeError:`Failed to upgrade plugin. Please try again.`},pluginDetail:{backToPluginsAriaLabel:`Back to plugins`,noReadme:`This plugin doesn't ship a README.`,version:`v{version}`},pluginDetailShared:{autoIncludeInChat:`Auto-include in chat`,download:`Download`,homepageLabel:`Homepage`,hooksLabel:`Hooks`,install:`Install`,licenseLabel:`License`,loadErrorDetail:`It may not exist, or your assistant may be on an older build.`,loadErrorTitle:`We couldn't load this plugin.`,localSource:`Local`,remove:`Remove`,removePluginTitle:`Remove plugin`,skillsLabel:`Skills`,sourceLabel:`Source`,toolsLabel:`Tools`,upgrade:`Upgrade`,upgradePluginTitle:`Upgrade plugin`,upgradeTitle:`Upgrade {fromSha} → {toSha}`},pluginListRow:{disabled:`Disabled`,enabled:`Enabled`,installingAriaLabel:`Installing`,installPluginAriaLabel:`Install plugin`,moreIssues:`{count, plural, one { (+# more)} other { (+# more)}}`,noDescription:`No description provided.`,pluginTag:`Plugin`,removePluginAriaLabel:`Remove plugin`,version:`v{version}`},pluginOriginBadge:{external:`External`,local:`Local`},pluginToast:{alreadyUpToDate:`{name} is already up to date`,installed:`Installed {name}`,pluginFallback:`plugin`,pluginFallbackCapitalized:`Plugin`,removed:`Removed {name}`,upgraded:`Upgraded {name} to {sha}`},recencyLens:{all:`All`,ariaLabel:`Recency window`,month:`Month`,week:`Week`},sections:{channels:`Channels`,contacts:`Contacts`,library:`Library`,memory:`Memory`,schedules:`Schedules`,superpowers:`My Superpowers`,workspace:`Workspace`},skillDetail:{backToSkillsAriaLabel:`Back to skills`,filesTab:`Files`,fileViewModeAriaLabel:`File view mode`,historyTab:`History`,install:`Install`,noFilesAvailable:`No files available.`,openInWorkspaceAriaLabel:`Open in Workspace`,pendingAriaLabel:`Pending`,preview:`Preview`,remove:`Remove`,saveFailed:`Save failed`,selectAFile:`Select a file`,selectFilePrompt:`Select a file to view its contents.`,source:`Source`},skillDetailPage:{backToSuperpowers:`Back to My Superpowers`,notFoundSubtitle:`This skill may have been removed, or the link is out of date.`,notFoundTitle:`Skill not found`},skillFileContent:{binaryFile:`Binary file. No preview available.`,noPreviewAvailable:`No preview available for {fileName}.`},skillOriginBadge:{assistantMemory:`Assistant's Memory`,custom:`Custom`},skillRevisionHistory:{loadError:`Couldn't load revision history.`,noChanges:`No changes recorded yet.`,noPreviewForChange:`No preview available for this change.`,truncatedNotice:`Showing recent changes. Older history is periodically compacted, so this may not reach back to when the skill was created.`},skillRow:{bundledSkillCannotBeRemovedAriaLabel:`Bundled skill cannot be removed`,bundledSkillsCannotBeRemoved:`Bundled skills cannot be removed`,installingAriaLabel:`Installing`,installSkillAriaLabel:`Install skill`,removeSkillAriaLabel:`Remove skill`},skillsErrorState:{subtitle:`Something went wrong. Try refreshing the page.`,title:`Failed to load skills`},superpowersFilters:{categoriesLabel:`Categories`,done:`Done`,filterAriaLabel:`Filter superpowers`,filterLabel:{all:`All`,assistantMemory:`Assistant's Memory`,available:`Available`,custom:`Custom`,installed:`Installed`,plugins:`Plugins`,skills:`Skills`},filtersTitle:`Filters`,searchAriaLabel:`Search superpowers`,searchPlaceholder:`Search superpowers`,sourceLabel:`Source`,statusLabel:`Status`,typeLabel:`Type`},superpowersTab:{catalogBrowsingUnavailableNotice:`Plugin catalog browsing is temporarily unavailable. Installed plugins are still listed below.`,categoriesAriaLabel:`Superpower categories`,dismissTipAriaLabel:`Dismiss tip`,emptyState:{assistantMemorySubtitle:`Skills your assistant authors from past conversations will appear here.`,assistantMemoryTitle:`No Skills From Memory`,availableSubtitle:`All available skills and plugins are installed.`,availableTitle:`Nothing Left to Install`,categorySubtitle:`Try selecting a different category or clearing the filter.`,categoryTitle:`Nothing in this category`,clawhubSubtitle:`No Clawhub skills found. Try searching the catalog.`,clawhubTitle:`No Clawhub Skills`,customSubtitle:`Create a custom skill by describing what you want in chat.`,customTitle:`No Custom Skills`,defaultSubtitle:`Check your connection to the Vellum catalog.`,defaultTitle:`No Superpowers Available`,installedSubtitle:`Ask your assistant in chat to search for and install new skills and plugins.`,installedTitle:`No Superpowers Installed`,pluginsSubtitle:`Browse the catalog to install plugins that extend your assistant.`,pluginsTitle:`No Plugins Found`,skillsshSubtitle:`No skills.sh skills found. Try searching the catalog.`,skillsshTitle:`No skills.sh Skills`,skillsSubtitle:`Ask your assistant in chat to search for and install new skills.`,skillsTitle:`No Skills Found`,vellumSubtitle:`No bundled Vellum skills found.`,vellumTitle:`No Vellum Skills`},errorStateSubtitle:`Something went wrong. Try refreshing the page.`,errorStateTitle:`Failed to load superpowers`,pluginsUnavailableNotice:`Plugins are temporarily unavailable. Skills are still listed below.`,skillsUnavailableNotice:`Skills are temporarily unavailable. Plugins are still listed below.`,tipBannerText:`Create a new custom skill by describing what you want in chat, or install plugins to extend your assistant.`},updateAvailableBadge:{updateAvailable:`Update available`,upgradePluginAriaLabel:`Upgrade plugin`},useIdentitySectionStats:{activeCount:`{count, plural, one {# active} other {# active}}`,activeLabel:`{count, plural, one {active} other {active}}`,appCount:`{count, plural, one {# app} other {# apps}}`,connectedCount:`{count, plural, one {# connected} other {# connected}}`,connectedLabel:`{count, plural, one {connected} other {connected}}`,docCount:`{count, plural, one {# doc} other {# docs}}`,itemCount:`{count, plural, one {# item} other {# items}}`,itemLabel:`{count, plural, one {item} other {items}}`,noSchedulesText:`Nothing scheduled yet`,personCount:`{count, plural, one {# person} other {# people}}`,personLabel:`{count, plural, one {person} other {people}}`,pluginCount:`{count, plural, one {# plugin} other {# plugins}}`,skillCount:`{count, plural, one {# skill} other {# skills}}`},usePluginsList:{failureMessage:`Failed to load plugins`},memoryUnavailable:{statusError:{title:`Couldn't check your memory settings`,detail:`Something went wrong reading this assistant's memory status, so there's nothing reliable to tell you yet.`},off:{title:`Memory is turned off`,detail:`Your assistant isn't keeping anything from your conversations, so there's no map to draw. Turn Memory back on to start remembering again.`},legacy:{title:`Upgrade to memory v3`,detail:`Your assistant is on an older memory engine. Memory v3 reorganizes what it knows into a linked wiki of concepts, and that wiki is what this map draws.`},unknown:{title:`Memory graph isn't available`,detail:`This assistant's memory backend doesn't report enough to say why. Update your assistant, and this page will tell you what it needs.`},prompts:{v2:`Migrate my memory from v2 to v3. That's most likely your "Memory v3 Migration" skill, but work out what my corpus actually needs and follow whichever skill you use exactly.
|
|
4
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Gt(e,t){if(e){if(typeof e==`string`)return Kt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Kt(e,t)}}function Kt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function qt(e,t){if(!(typeof Symbol>`u`||!(Symbol.iterator in Object(e)))){var n=[],r=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),s;!(r=(s=o.next()).done)&&(n.push(s.value),!(t&&n.length===t));r=!0);}catch(e){i=!0,a=e}finally{try{!r&&o.return!=null&&o.return()}finally{if(i)throw a}}return n}}function Jt(e){if(Array.isArray(e))return e}function X(e){"@babel/helpers - typeof";return X=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},X(e)}function Yt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Xt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Yt(Object(n),!0).forEach(function(t){Zt(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yt(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Zt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Qt(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function $t(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function en(e,t,n){return t&&$t(e.prototype,t),n&&$t(e,n),e}function tn(){return{memoize:!0,memoizeFallback:!1,bindI18n:``,bindI18nStore:``,parseErrorHandler:function(e,t,n,r){return n},parseLngForICU:function(e){return e},escapeVariables:!1}}var nn=function(){function e(t){Qt(this,e),this.type=`i18nFormat`,this.mem={},this.init(null,t)}return en(e,[{key:`init`,value:function(e,t){var n=this,r=e&&e.options&&e.options.i18nFormat||{};if(this.options=Fe(r,t,this.options||{},tn()),this.formats=this.options.formats,e){var i=this.options,a=i.bindI18n,o=i.bindI18nStore,s=i.memoize;e.IntlMessageFormat=Ht,e.ICU=this,s&&(a&&e.on(a,function(){return n.clearCache()}),o&&e.store.on(o,function(){return n.clearCache()}))}}},{key:`addUserDefinedFormats`,value:function(e){this.formats=this.formats?Xt(Xt({},this.formats),e):e}},{key:`parse`,value:function(e,t,n,r,i,a){var o=a&&a.resolved&&a.resolved.res,s=this.options.memoize&&`${n}.${r}.${i.replace(/\./g,`###`)}`,c;this.options.memoize&&(c=je(this.mem,s));try{return c||(c=new Ht(e,this.options.parseLngForICU(n),this.formats,{ignoreTag:!0}),this.options.memoize&&(this.options.memoizeFallback||!a||o)&&Ae(this.mem,s,c)),c.format(this.escapeVariableValues(t))}catch(n){return this.options.parseErrorHandler(n,i,e,t)}}},{key:`addLookupKeys`,value:function(e,t,n,r,i){return e}},{key:`clearCache`,value:function(){this.mem={}}},{key:`escapeVariableValues`,value:function(e){if(!this.options.escapeVariables||!e||X(e)!==`object`)return e;for(var t={},n=0,r=Object.entries(e);n<r.length;n++){var i=Ut(r[n],2),a=i[0],o=i[1];typeof o==`string`?t[a]=o.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`):t[a]=o}return t}}]),e}();nn.type=`i18nFormat`;var rn={authWaitSpinner:{loading:`Loading`},signupScreen:{headlineLead:`Meet your new`,headlineRoles:{personalIntelligence:`Personal Intelligence`,softwareEngineer:`Software Engineer`,financeOps:`Finance Ops`,householdManager:`Household Manager`,gtmEngineer:`GTM Engineer`,productLead:`Product Lead`},subtitle:`The most powerful assistant that can handle your work and life admin tasks.`,continue:`Continue`,downloadMac:`Download for macOS`,haveAccountPrompt:`Already have an account? <signIn>Sign in</signIn>`},accountPage:{loading:`Loading...`,welcomeTitle:`Welcome to Vellum`,welcomeSubtitle:`Sign in to get started.`,signIn:`Sign in`,signedInTitle:`Welcome!`,signedInTitleNamed:`Welcome, {name}!`,signedInSubtitle:`You are signed in.`,goToAssistant:`Go to your assistant`,signOut:`Sign out`},loginPage:{signUp:`Sign up`,signIn:`Sign in`},logoutPage:{title:`Signing out...`},platformLoopbackPage:{backToWelcome:`Back to Welcome`,completing:`Completing login...`},oauthComplete:{errorCode:`Error: {code}`},providerCallbackPage:{signupClosedTitle:`Signups are currently closed`,signupClosedSubtitle:`Join the community to request access or learn when signups reopen.`,joinCommunity:`Join the community`,backToSignIn:`Back to sign in`,failedTitle:`Authentication failed`,failedSubtitle:`Something went wrong during social sign-in. Please try again or use a different method.`,completingTitle:`Completing sign-in...`,completingSubtitle:`Please wait while we finish authenticating you.`},providerSignupPage:{completingTitle:`Completing signup...`,completingSubtitle:`Please wait while we load your information.`,headingLine1:`Almost there,`,headingLine2:`one more detail`,firstNameQuestion:`What should I call you?`,firstNamePlaceholder:`First name`,lastNameQuestion:`And your last name?`,lastNamePlaceholder:`Last name`,roleQuestion:`Your role`,rolePlaceholder:`e.g. Software Engineer`,submitting:`Setting up…`,submit:`Continue →`,completeAccountTitle:`Complete your account`,completeAccountSubtitle:`We need a few more details to finish setting up your account.`,backToSignIn:`← Back to sign in`,emailPlaceholder:`Email`,usernamePlaceholder:`Username`,completeSignup:`Complete signup`,completingSignup:`Completing...`},authErrors:{genericFailure:`Something went wrong. Please try again.`,signupClosed:`Sign-ups are currently closed. Visit {community} to request access.`,providerSignup:`No Vellum account is linked to that login yet. Sign up first, then sign in.`,loginIncomplete:`Your account needs another step to finish signing in. Please sign in on the web, then try again.`,desktopUpdateRequired:`This version of the Vellum desktop app can't sign in. Update the app, then try again.`,loopbackStateMismatch:`Login failed: state mismatch. Please try again.`,loopbackNoToken:`Login failed: no session token received. Please try again.`,loopbackInvalidToken:`Login failed: invalid session token.`}},an={assistantChannelsList:{drawerTitle:`Channels`,disconnectTitle:`Disconnect {channel}?`,disconnectConfirm:`Disconnect`,confirmFallback:`Confirm`},channelAdapterList:{pluginChannelAria:`{channel}, from a plugin`},connectionCard:{connected:`Connected`,disconnecting:`Disconnecting…`,disconnect:`Disconnect`},slackChannelCard:{setupHeading:`Slack setup`},channelPanel:{incompleteTitle:`{channel} isn't working yet`,disconnectedTitle:`{channel} isn't connected`,incompleteDescription:`{channel} is set up but not delivering messages yet. Your assistant can pick up where setup left off and tell you what is wrong.`,opening:`Opening…`,finishSetup:`Finish setup with your assistant`,setUp:`Set up`,connectManually:`or connect manually`},pluginChannelPanel:{openPluginPage:`Open plugin page`,ingressLoading:`Checking who can reach {channel}…`,ingressUnsupported:`This assistant's gateway does not report ingress approvals, so there is nothing to decide here.`,ingressForbidden:`Only this assistant's guardian can see or change ingress approvals.`,ingressUnreadable:`Could not read the ingress approval for {channel}.`,ingressNone:`The gateway sees no ingress declaration for {channel}, so there is nothing to approve yet.`,ingressApprovedTag:`Ingress approved`,ingressPendingTag:`Ingress awaiting approval`,approvedAddresses:`{channel} receives messages at these addresses:`,pendingAddresses:`{channel} asks to receive messages at these addresses. Until you approve, deliveries to them are refused:`,ungovernedAddresses:`These addresses are open whatever you decide, because only Vellum can reach them:`,deliversInbound:`What arrives here becomes a message to your assistant, not just a callback {channel} receives. Who gets through is still decided by who you allow to message it.`,revokeIngress:`Revoke ingress`,approveIngress:`Approve ingress`},channelTrustFloor:{heading:`Who can message {assistant}`,loading:`Loading…`,loadFailed:`Couldn’t load this setting. Try reopening this page.`,selectAria:`Who can message {assistant}`,trustedContactsNotice:`People you haven’t verified yet (even teammates in the same channel) can’t get through: {assistant} lets them know they need to be verified and notifies you. You can verify people ahead of time in Contacts.`},slackChannelTypeDefaults:{heading:`Default access`,subtitle:`How much {assistant} does on its own, by conversation type. Individual channels can override this below, and <trustRules>Trust Rules</trustRules> fine-tune when it asks.`,bucketAria:`Default Assistant Access for {bucket}`},tierPicker:{defaultSuffix:`default`,defaultPlaceholder:`Default`},slackChannelTierLegend:{defaultMarker:`· default`},slackChannelSection:{overridesLoadFailed:`Couldn’t load access settings. These controls stay disabled until they load. Try reopening this page.`,perChannelOverrides:`Per-channel overrides`},slackThreadBehavior:{heading:`Thread Behavior`,selectAria:`Slack thread behavior`,mentionsOnly:`Mentions only`,mentionsOnlyHelp:`Bot only responds when @mentioned.`,followThreads:`Follow threads after first mention`,followThreadsHelp:`After an @mention in a thread, bot listens to the rest of that thread.`},slackChannelList:{presenceHint:`Add with <invite>/invite {handle}</invite> or remove with <remove>/remove {handle}</remove> in that Slack channel. Only channels {assistant} is in appear here.`,loading:`Loading…`,loadFailed:`Couldn’t load channels. Try reopening this page.`,emptyTitle:`No channels yet`,searchPlaceholder:`Search channels`,searchAria:`Search channels`,filterGroupAria:`Filter channels by type`,noMatches:`No channels match.`,accessAria:`Assistant Access in {channel}`,filterAll:`{count, plural, one {All (#)} other {All (#)}}`,filterPublic:`{count, plural, one {Public (#)} other {Public (#)}}`,filterPrivate:`{count, plural, one {Private (#)} other {Private (#)}}`},twilioCredentialEntry:{accountSid:`Account SID`,authToken:`Auth Token`,authTokenPlaceholder:`Twilio auth token`,saving:`Saving…`,save:`Save`},channelMeta:{slack:{label:`Slack`,disconnectMessage:`This clears the stored Slack bot and app tokens for this assistant. You can reconnect later.`},telegram:{label:`Telegram`,disconnectMessage:`This clears the stored Telegram bot token for this assistant. You can reconnect later.`,disconnectedPitch:`Connect a Telegram bot so {assistant} can send and receive messages on Telegram.`},phone:{label:`Phone Calling`,disconnectMessage:`This clears the stored Twilio credentials for this assistant. You can reconnect later.`,disconnectedPitch:`Connect your Twilio account so {assistant} can make and answer phone calls.`}}},on={actions:{save:`Save`,saving:`Saving…`,merge:`Merge…`,merging:`Merging…`,delete:`Delete`,deleting:`Deleting…`,connect:`Connect`,connecting:`Connecting…`,disconnect:`Disconnect`,disconnecting:`Disconnecting…`,cancel:`Cancel`,back:`Back`,verify:`Verify`,verifying:`Verifying…`,revoke:`Revoke`},channelType:{slack:`Slack`,telegram:`Telegram`,whatsapp:`WhatsApp`,a2a:`A2A`,phone:`Phone`,email:`Email`},contact:{nameLabel:`Name`,notesLabel:`Notes`,draftName:`New Contact`,interactions:`{count, plural, one {# interaction} other {# interactions}}`,mergeBlockedNoCandidates:`No other contacts available to merge`,mergeBlockedUnsaved:`Save your changes before merging`},contactsPage:{title:`Contacts`,mergeSucceeded:`Contacts merged`,mergeFailed:`Failed to merge contacts`,createFailed:`Failed to create contact`,deleteFailed:`Failed to delete contact`,saveFailed:`Failed to save contact`,verifyFailed:`Failed to verify channel`,rosterLoadFailed:`Couldn’t load the workspace roster. Check the Slack connection and try again.`,emptyBody:`Select a contact`},contactsList:{heading:`Entries`,addAriaLabel:`Add contact`,searchPlaceholder:`Search Contacts`,noMatches:`No matching contacts`,add:`Add Contact`,verified:`Verified`,unverified:`Unverified`,you:`You`,youNamed:`{name} (You)`,assistantFallback:`Your Assistant`},contactDetailView:{namePlaceholder:`Give this human a name`,notesPlaceholder:`Optional notes about the human which AI will take into account`,mergeBlockedUnsavedDraft:`Save this contact before merging`,delete:`Delete Contact`,linkedAccountsTitle:`Linked accounts`,linkedAccountsSubtitle:`Where the assistant recognizes this contact. Link accounts you know, invite the ones you don't.`,deleteConfirmTitle:`Delete {name}?`,deleteConfirmMessage:`This will permanently delete this contact and all their channels. This action cannot be undone.`},guardianDetailView:{namePlaceholder:`Your name`,notesPlaceholder:`Notes about yourself which AI will take into account`,channelsTitle:`Channels`,channelsSubtitle:`Once verified, your assistant will recognize you when you message from these channels.`,setupLabel:`Verify me`},assistantChannelsDetail:{title:`{name} (Your Assistant)`,channelsTitle:`Channels`,channelsSubtitle:`Where {name} can be reached.`},assistantContactChannels:{disconnectConfirmTitle:`Disconnect {channel}?`,disconnectConfirmMessage:`This clears the stored credentials for this channel. You can reconnect later.`},accountLink:{linked:`Linked as @{username}`,linkFailed:`Failed to link account`},connectPage:{invalidTitle:`Invalid invite link`,invalidBody:`The link you followed is missing required parameters and cannot be used.`,goToContacts:`Go to Contacts`,title:`Connect assistants`,body:`Accepting this link will create a trusted A2A connection between your assistant and the sender's.`,alreadyConnected:`Already connected`,connected:`Connected!`,errorExpired:`This invite link has expired or already been used.`,errorAlreadyRedeemed:`This invite has already been claimed by someone else.`,errorSenderNotFound:`The sender's assistant could not be found.`,errorNotPlatformManaged:`A2A invite links are only supported for platform-hosted assistants.`,errorGeneric:`Something went wrong. Please try again.`},channelStatus:{connected:`Connected`,verified:`Verified`},contactChannelsSection:{verifyConfirmTitle:`Verify {channel}`,verifyConfirmMessageContact:`This will mark this contact's {channel} channel as verified. Your assistant will recognize them when they reach out from it.`,verifyConfirmMessageGuardian:`This will mark your {channel} channel as verified. Your assistant will recognize you when you reach out from it.`,revokeConfirmTitle:`Revoke {channel}`,revokeConfirmMessage:`This will disconnect the verified channel. The contact will need to re-verify to use this channel again.`,linkAccount:`Link account`,setupDefault:`Invite`},linkAccountDialog:{title:`Link {channel} account`,description:`Search your {channel} workspace and pick <contact>{name}</contact>’s account.`,searchPlaceholder:`Search by name or @handle`,searchAriaLabel:`Search {channel} workspace accounts`,loading:`Loading workspace members…`,noMembers:`No workspace members found.`,noMatches:`No members match.`,linking:`Linking…`,guardianLinkNote:`Picking marks this account as <emphasis>guardian-linked</emphasis>: you vouch for the identity, no handshake needed.`,inviteInstead:`Or send an invite instead`},contactMergeDialog:{titlePicked:`Merge "{donor}" into {survivor}?`,titlePicking:`Merge another contact into {survivor}`,descriptionPicked:`Channels and notes from the merged contact will move over. The merged contact will be deleted.`,descriptionPicking:`The contact you pick will be deleted. Its channels and notes will be added to this one.`,confirm:`Merge`,searchPlaceholder:`Search contacts`,listAriaLabel:`Select a contact to merge`,empty:`No other contacts available to merge.`,donorDeleted:`<donor>“{donor}”</donor> will be deleted.`,channelsMoved:`{count, plural, =0 {No new channels will move to {survivor}.} one {# channel will move to {survivor}: {channels}.} other {# channels will move to {survivor}: {channels}.}}`,duplicatesSkipped:`{count, plural, one {# duplicate channel already on {survivor} (skipped).} other {# duplicate channels already on {survivor} (skipped).}}`,notesAppended:`Notes from the merged contact will be appended.`,irreversible:`This cannot be undone.`},survivorName:{you:`you`,youNamed:`{name} (you)`,thisContact:`this contact`}},sn={credentialEntry:{checkingTitle:`Checking link`,checkingBody:`Looking up this credential request.`,savedTitle:`Credential saved`,savedBody:`You can close this tab and return to your conversation, and the assistant can use the credential right away. The value can't be viewed again.`,invalidTitle:`Link not valid`,invalidBody:`This credential link isn't valid. Check that the full link was copied, or ask for a new one.`,expiredTitle:`Link expired`,expiredBody:`This credential link has expired. Links only work for a short time, so ask for a new one and enter the value again.`,usedTitle:`Link already used`,usedBody:`This credential link has already been used. Each link works exactly once, so ask for a new one if the value still needs to be provided.`,storeFailedTitle:`Link no longer valid`,storeFailedBody:`The assistant could not store the credential, and for safety this one-time link cannot be reused. Ask for a new link and try again there.`,errorTitle:`Something went wrong`,errorBody:`The credential request couldn't be loaded. Refresh the page to try again.`,heading:`Provide a credential`,oneTimeEntry:`one-time entry`,instructions:`Enter the secret value below. It is stored encrypted on the assistant, is never shown again, and this link stops working as soon as it's used.`,submit:`Submit`,expiresIn:`Expires in {remaining} ({time}).`,valueLabel:`Secret value`,valuePlaceholder:`Enter the secret value`}},cn={actions:{markAsRead:`Mark as read`,markAsUnread:`Mark as unread`,restore:`Restore`,dismiss:`Dismiss`,goToThread:`Go to thread`,goToConversation:`Go to Conversation`,goToConvo:`Go to Convo`,viewSchedule:`View schedule`,viewSkill:`View skill`,markAllAsRead:`Mark all as read`,clearAll:`Clear all`},category:{all:`All`,security:`Security`,email:`Email`,scheduling:`Scheduling`,background:`Background`,system:`System`},homeRecapRow:{actionsTitle:`Update Actions`},homeTopHeader:{title:`Activity`},homeFeedFilterBar:{ariaLabel:`Filter notifications`},homeFeedList:{today:`Today`,yesterday:`Yesterday`,older:`Older`,noMatches:`No items match the selected filter.`,emptyTitle:`No notifications yet`,emptyBody:`Updates and activity from your assistant will appear here.`,earlier:`Earlier ({count, number})`,dismissed:`Dismissed ({count, number})`},homePage:{loadFailed:`Couldn't load home feed.`,loadFailedDetail:`Couldn't load home feed: {message}`},homeDetailPanel:{back:`Back`,heading:`Details`,close:`Close`,closeAriaLabel:`Close detail panel`,untitled:`Notification`},homeToolPermissionCard:{missingScopes:`Missing scopes`,status:{revoked:`Revoked`,expired:`Expired`,missingScopes:`Missing scopes`,missingToken:`Missing token`,pingFailed:`Ping failed`,unreachable:`Unreachable`}},notificationsBell:{ariaLabel:`Notifications`,ariaLabelUnread:`Notifications (unread)`,heading:`Notifications`,loadFailed:`Couldn't load notifications.`,empty:`No notifications yet.`,actionFailed:`Couldn't start that conversation. Try again.`},notificationsBellDetail:{back:`Back to notifications`}},ln={libraryEmptyState:{heading:`Your library is empty`,body:`Ask your assistant to build something, or import a shared app`,newConversation:`New Conversation`,separator:`or`,importFile:`Import .vellum File`},libraryView:{importFailed:`Failed to import app`,imported:`{name} imported`,loadingAria:`Loading apps`,retry:`Retry`,import:`Import`,searchPlaceholder:`Search your library`,noMatches:`No apps or documents matched “{query}”`,pinned:`Pinned`,recents:`Recents`,documents:`Documents`},libraryAppCard:{exported:`App exported`,shareFailed:`Failed to share app`,actionsTitle:`Options for {appName}`,unpin:`Unpin`,pin:`Pin`,share:`Share`,shareSub:`Export as .vellum file`,deployed:`Deployed to Vercel`,copyLink:`Copy link`,redeploy:`Redeploy`,redeploySub:`Publish the current version`,deploy:`Deploy to Vercel`,deploySub:`Publish as a static page`,delete:`Delete`},libraryDetailPage:{backToLibrary:`Back to Library`}},un={errorRetryRow:{retrying:`Retrying…`,retry:`Retry`},emailsTab:{inbound:`Inbound`,outbound:`Outbound`,noSubject:`(no subject)`,addressesLoadFailed:`Couldn't load email addresses.`,noAddress:`No email address registered yet.`,setUpLink:`Set one up in AI Settings, Email.`,totals:`Totals`,sentToday:`Sent today`,dailyLimitSub:`of {limit, number} daily limit`,receivedToday:`Received today`,sentThisMonth:`Sent this month`,receivedThisMonth:`Received this month`,recentEmails:`Recent Emails`,loading:`Loading…`,emailsLoadFailed:`Couldn't load recent emails.`,noEmails:`No emails yet.`},systemEventsTab:{longSleep:`Long sleep`,hideDetails:`Hide details`,showDetails:`Show details`,intro:`Lifecycle events for your assistant from the last {days, plural, one {# day} other {# days}}, newest first.`,loading:`Loading system events...`,loadFailed:`Failed to load system events. Please refresh and try again.`,empty:`No system events recorded in the last {days, plural, one {# day} other {# days}}.`,loadingOlder:`Loading older events...`,loadOlder:`Load older events`},emailsPage:{platformLoginNotice:`Log in to the Vellum platform to view emails.`},systemEventsPage:{platformLoginNotice:`Log in to the Vellum platform to view system events.`,notAvailable:`System events aren't available for the current assistant.`}},dn={applyPersonalityUpdate:{conversationTitle:`Updating personality`},applyRename:{conversationTitle:`Updating name`},assistantNameEditor:{greeting:`Hi, I’m {name}`,renamingInProgressAriaLabel:`Renaming in progress`},categorySidebar:{all:`All`,skillCategoriesAriaLabel:`Skill categories`},conceptDetailPanel:{askAboutThis:`Ask about this`,askPrompt:`Tell me what you remember about "{title}" and how it connects to the rest of what you know.`,backAriaLabel:`Back`,closeAriaLabel:`Close`,connectionCount:`{count, plural, one {# connection} other {# connections}}`,emptyContent:`This concept doesn't have written content yet. It exists as a link in the graph, but its page is empty.`,loadError:`Couldn't load this concept. Try again in a moment.`,readFullNote:`Read full note`,refine:`Refine`,refinePrompt:`I want to refine what you remember about "{title}". Ask me what's off and we'll correct it together.`,showLess:`Show less`,trailAriaLabel:`Concept trail`,updated:`Updated {date}`,wiredTo:`Wired to`},conceptGraphConstants:{nodeKind:{capability:`Capability`,concept:`Concept`,other:`Other`,pending:`Pending`,skill:`Skill`}},conceptGraphIntroBanner:{description:`Every idea it learns, and the links it draws between them, shows up here. The map grows and rearranges itself as you talk, so the more you share, the richer it gets.`,dismissAriaLabel:`Dismiss`,title:`This is your assistant's mind`},conceptGraphLegend:{coloredByTheme:`Colored by theme`,learned:`Learned`,link:`Link`,moreThemes:`{count, plural, one {+# more} other {+# more}}`},conceptGraphView:{clearSearchAriaLabel:`Clear search`,dragToRotateHint:`drag to rotate · scroll to zoom`,emptyDetail:`As your assistant learns and links ideas, they'll appear here as a living map of its memory.`,emptyTitle:`No concepts yet`,enterFullscreenAriaLabel:`Enter fullscreen`,exitFullscreenAriaLabel:`Exit fullscreen`,loadErrorDetail:`Something went wrong fetching your assistant's memory. Try again in a moment.`,loadErrorTitle:`Couldn't load the memory graph`,resetViewAriaLabel:`Reset view`,searchConceptsAriaLabel:`Search concepts`,searchConceptsPlaceholder:`Search concepts…`,truncatedNotice:`{count, plural, one {Showing the # most-connected concept} other {Showing the # most-connected concepts}}`,zoomInAriaLabel:`Zoom in`,zoomOutAriaLabel:`Zoom out`},createMemoryModal:{cancel:`Cancel`,contentLabel:`What should I remember?`,contentPlaceholder:`e.g. I prefer concise, bulleted summaries.`,create:`Create memory`,createError:`Failed to create memory.`,creating:`Creating…`,helperText:`It lands on the map right away, then settles into a concept as it's filed.`,savedFoundToast:`Got it. Taking you to it.`,savedPendingToast:`Got it. It's on your map while I file it away.`,saveError:`Couldn't save that memory.`,title:`New memory`},getMemoryGraph:{failureMessage:`Failed to load the memory graph.`},getMemoryGraphNode:{failureMessage:`Failed to load this concept.`},identityOverview:{cardHoverLine:{channels:`All the places you can reach me`,contacts:`The people I know and trust`,library:`The apps and docs I've made for you`,memory:`Everything I remember`,personality:`Go ahead, tweak my soul`,schedules:`What I do on repeat`,superpowers:`Everything I know how to do`,workspace:`All the files that power me`},defaultAssistantName:`Assistant`,memoryCount:`{count, plural, one {# memory} other {# memories}}`,memoryCountLabel:`{count, plural, one {memory} other {memories}}`,renameErrorToast:`The rename didn't go through. Please try again.`,renameSuccessToast:`Say hi to {newName}!`,scheduleCadence:`{cadence} · next {nextRun}`,updateAvatarAndName:`Update avatar and name`,viewMoreSchedules:`{count, plural, one {View # more…} other {View # more…}}`},identitySections:{channels:{description:`Where I listen`,label:`Channels`},contacts:{description:`People I know`,label:`Contacts`},library:{description:`My apps & docs`,label:`Library`},memory:{description:`What I remember`,label:`Memory`},personality:{description:`Tune how I talk`,label:`Personality`},schedules:{description:`My routines`,label:`Schedules`},superpowers:{description:`What I can do`,label:`Superpowers`},workspace:{description:`My files`,label:`Workspace`}},installSkill:{failureMessage:`Failed to install skill.`},intelligenceLayout:{backToAriaLabel:`Back to {name}`,backToTitle:`Back to {name}`},listConceptPages:{failureMessage:`Failed to load concept pages.`},memoryFormat:{justNow:`just now`},memoryPage:{createMemory:`Create memory`},memoryTypes:{sourceType:{direct:`Told directly`,inferred:`Inferred`,observed:`Observed`,toldByOther:`Told by other`}},memoryUpgradePrompt:{memorySettings:`Memory settings`,tryAgain:`Try again`,turnMemoryOn:`Turn memory on`,upgradeMemory:`Upgrade memory`},personalityAxes:{companionCoworker:{left:`Companion`,right:`Coworker`},executeCollaborate:{left:`Independent`,right:`Collaborative`},genzBoomer:{left:`Gen Z`,right:`Baby Boomer`},playfulSerious:{left:`Playful`,right:`Serious`},politeUnfiltered:{left:`Polite`,right:`Unfiltered`}},personalityPage:{back:`Back`,subtitle:`Slide the dials, then hit update, I’ll rewrite myself to match.`,title:`Shape my personality`,updateErrorToast:`The personality update didn't go through. Please try again.`,updatePersonality:`Update personality`,updateSuccessToast:`Personality updated. Go say hi!`,updatingPersonality:`Updating {name}'s personality…`},personalitySignature:{ariaLabel:`Personality: {summary}`,axisBalanced:`{left} and {right} balanced`,axisLean:`{percent}% {label}`},personalitySliderRow:{rangeAriaLabel:`{left} to {right}`},pluginConstants:{installError:`Failed to install plugin. Please try again.`,removeConfirmMessage:`Remove "{name}" from this assistant?`,removeError:`Failed to remove plugin. Please try again.`,riskyUpgradeConfirmLabel:`Upgrade anyway`,riskyUpgradeConfirmMessage:`"{name}" has local edits that will be overwritten by the upgrade. Continue?`,toggleError:`Failed to update plugin. Please try again.`,upgradeError:`Failed to upgrade plugin. Please try again.`},pluginDetail:{backToPluginsAriaLabel:`Back to plugins`,noReadme:`This plugin doesn't ship a README.`,version:`v{version}`},pluginDetailShared:{autoIncludeInChat:`Auto-include in chat`,download:`Download`,homepageLabel:`Homepage`,hooksLabel:`Hooks`,install:`Install`,licenseLabel:`License`,loadErrorDetail:`It may not exist, or your assistant may be on an older build.`,loadErrorTitle:`We couldn't load this plugin.`,localSource:`Local`,remove:`Remove`,removePluginTitle:`Remove plugin`,skillsLabel:`Skills`,sourceLabel:`Source`,toolsLabel:`Tools`,upgrade:`Upgrade`,upgradePluginTitle:`Upgrade plugin`,upgradeTitle:`Upgrade {fromSha} → {toSha}`},pluginListRow:{disabled:`Disabled`,enabled:`Enabled`,installingAriaLabel:`Installing`,installPluginAriaLabel:`Install plugin`,moreIssues:`{count, plural, one { (+# more)} other { (+# more)}}`,noDescription:`No description provided.`,pluginTag:`Plugin`,removePluginAriaLabel:`Remove plugin`,version:`v{version}`},pluginOriginBadge:{external:`External`,local:`Local`},pluginToast:{alreadyUpToDate:`{name} is already up to date`,installed:`Installed {name}`,pluginFallback:`plugin`,pluginFallbackCapitalized:`Plugin`,removed:`Removed {name}`,upgraded:`Upgraded {name} to {sha}`},recencyLens:{all:`All`,ariaLabel:`Recency window`,month:`Month`,week:`Week`},sections:{channels:`Channels`,contacts:`Contacts`,library:`Library`,memory:`Memory`,schedules:`Schedules`,superpowers:`My Superpowers`,workspace:`Workspace`},skillDetail:{backToSkillsAriaLabel:`Back to skills`,filesTab:`Files`,fileViewModeAriaLabel:`File view mode`,historyTab:`History`,install:`Install`,noFilesAvailable:`No files available.`,openInWorkspaceAriaLabel:`Open in Workspace`,pendingAriaLabel:`Pending`,preview:`Preview`,remove:`Remove`,saveFailed:`Save failed`,selectAFile:`Select a file`,selectFilePrompt:`Select a file to view its contents.`,source:`Source`},skillDetailPage:{backToSuperpowers:`Back to My Superpowers`,notFoundSubtitle:`This skill may have been removed, or the link is out of date.`,notFoundTitle:`Skill not found`},skillFileContent:{binaryFile:`Binary file. No preview available.`,noPreviewAvailable:`No preview available for {fileName}.`},skillOriginBadge:{assistantMemory:`Assistant's Memory`,custom:`Custom`},skillRevisionHistory:{loadError:`Couldn't load revision history.`,noChanges:`No changes recorded yet.`,noPreviewForChange:`No preview available for this change.`,truncatedNotice:`Showing recent changes. Older history is periodically compacted, so this may not reach back to when the skill was created.`},skillRow:{bundledSkillCannotBeRemovedAriaLabel:`Bundled skill cannot be removed`,bundledSkillsCannotBeRemoved:`Bundled skills cannot be removed`,installingAriaLabel:`Installing`,installSkillAriaLabel:`Install skill`,removeSkillAriaLabel:`Remove skill`},skillsErrorState:{subtitle:`Something went wrong. Try refreshing the page.`,title:`Failed to load skills`},superpowersFilters:{categoriesLabel:`Categories`,done:`Done`,filterAriaLabel:`Filter superpowers`,filterLabel:{all:`All`,assistantMemory:`Assistant's Memory`,available:`Available`,custom:`Custom`,installed:`Installed`,plugins:`Plugins`,skills:`Skills`},filtersTitle:`Filters`,searchAriaLabel:`Search superpowers`,searchPlaceholder:`Search superpowers`,sourceLabel:`Source`,statusLabel:`Status`,typeLabel:`Type`},superpowersTab:{catalogBrowsingUnavailableNotice:`Plugin catalog browsing is temporarily unavailable. Installed plugins are still listed below.`,categoriesAriaLabel:`Superpower categories`,dismissTipAriaLabel:`Dismiss tip`,emptyState:{assistantMemorySubtitle:`Skills your assistant authors from past conversations will appear here.`,assistantMemoryTitle:`No Skills From Memory`,availableSubtitle:`All available skills and plugins are installed.`,availableTitle:`Nothing Left to Install`,categorySubtitle:`Try selecting a different category or clearing the filter.`,categoryTitle:`Nothing in this category`,clawhubSubtitle:`No Clawhub skills found. Try searching the catalog.`,clawhubTitle:`No Clawhub Skills`,customSubtitle:`Create a custom skill by describing what you want in chat.`,customTitle:`No Custom Skills`,defaultSubtitle:`Check your connection to the Vellum catalog.`,defaultTitle:`No Superpowers Available`,installedSubtitle:`Ask your assistant in chat to search for and install new skills and plugins.`,installedTitle:`No Superpowers Installed`,pluginsSubtitle:`Browse the catalog to install plugins that extend your assistant.`,pluginsTitle:`No Plugins Found`,skillsshSubtitle:`No skills.sh skills found. Try searching the catalog.`,skillsshTitle:`No skills.sh Skills`,skillsSubtitle:`Ask your assistant in chat to search for and install new skills.`,skillsTitle:`No Skills Found`,vellumSubtitle:`No bundled Vellum skills found.`,vellumTitle:`No Vellum Skills`},errorStateSubtitle:`Something went wrong. Try refreshing the page.`,errorStateTitle:`Failed to load superpowers`,pluginsUnavailableNotice:`Plugins are temporarily unavailable. Skills are still listed below.`,skillsUnavailableNotice:`Skills are temporarily unavailable. Plugins are still listed below.`,tipBannerText:`Create a new custom skill by describing what you want in chat, or install plugins to extend your assistant.`},updateAvailableBadge:{updateAvailable:`Update available`,upgradePluginAriaLabel:`Upgrade plugin`},useIdentitySectionStats:{activeCount:`{count, plural, one {# active} other {# active}}`,activeLabel:`{count, plural, one {active} other {active}}`,appAndDocCount:`{count, plural, one {# app or doc} other {# apps & docs}}`,appCount:`{count, plural, one {# app} other {# apps}}`,connectedCount:`{count, plural, one {# connected} other {# connected}}`,connectedLabel:`{count, plural, one {connected} other {connected}}`,itemCount:`{count, plural, one {# item} other {# items}}`,itemLabel:`{count, plural, one {item} other {items}}`,noSchedulesText:`Nothing scheduled yet`,personCount:`{count, plural, one {# person} other {# people}}`,personLabel:`{count, plural, one {person} other {people}}`,skillAndPluginCount:`{count, plural, one {# skill or plugin} other {# skills & plugins}}`,skillCount:`{count, plural, one {# skill} other {# skills}}`},usePluginsList:{failureMessage:`Failed to load plugins`},memoryUnavailable:{statusError:{title:`Couldn't check your memory settings`,detail:`Something went wrong reading this assistant's memory status, so there's nothing reliable to tell you yet.`},off:{title:`Memory is turned off`,detail:`Your assistant isn't keeping anything from your conversations, so there's no map to draw. Turn Memory back on to start remembering again.`},legacy:{title:`Upgrade to memory v3`,detail:`Your assistant is on an older memory engine. Memory v3 reorganizes what it knows into a linked wiki of concepts, and that wiki is what this map draws.`},unknown:{title:`Memory graph isn't available`,detail:`This assistant's memory backend doesn't report enough to say why. Update your assistant, and this page will tell you what it needs.`},prompts:{v2:`Migrate my memory from v2 to v3. That's most likely your "Memory v3 Migration" skill, but work out what my corpus actually needs and follow whichever skill you use exactly.
|
|
5
5
|
|
|
6
6
|
Run it in the background and tell me when it's done, or if something blocks.`,v1:`Migrate my memory from v1 to v3. That's most likely two hops, your "Memory v2 Migration" skill and then your "Memory v3 Migration" skill, but work out what my assistant actually needs and follow whichever skills you use exactly.
|
|
7
7
|
|
|
8
|
-
Run it in the background and tell me when it's done, or if something blocks.`,enable:`Turn my memory back on. I'd like you to start remembering things from our conversations again.`}}},fn={actions:{continue:`Continue`,back:`Back`,forward:`Forward`,cancel:`Cancel`,start:`Start`,add:`Add`,adding:`Adding…`,connect:`Connect`,connecting:`Connecting…`,tryAgain:`Try again`,remove:`Remove {value}`,logIn:`Log In`,logOut:`Log out`,loginToUse:`Log in to use`,downloadMacApp:`Download the macOS app`,claim:`Claim`,skipForNow:`Skip for now`,starting:`Starting…`},welcome:{title:`Welcome to Vellum`,body:`Your own personal intelligence is just a step away.`,continueWithoutAccount:`Continue without account`},startScreen:{createAssistant:`Create your assistant`},privacyScreen:{title:`Before You Start`,body:`Choose your privacy preferences. You can update these anytime in the Settings.`},hostingScreen:{title:`Hosting`,body:`Choose where you want your assistant to live.`,needHelp:`Need help deciding?`,optionsAriaLabel:`Hosting options`},apiKeyScreen:{title:`Connect a Model Provider`,body:`Choose the model provider your assistant should use.`,providerLabel:`Provider`,modelLabel:`Model`,baseUrlLabel:`Base URL`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,modelsHelp:`Comma-separated model identifiers exposed by your endpoint.`,apiKeyLabel:`{provider} API Key`,apiKeyPlaceholder:`Enter your API key`,noKeyPrompt:`Don't have it?`,getKeyLink:`Get an API key here`},selectAssistantScreen:{title:`Choose an Assistant`,listAriaLabel:`Assistants`,createNew:`Create a new assistant`,connectRemote:`Connect a remote assistant`,addRemote:`Add a remote assistant`,unnamedAssistant:`the assistant`,connectingToAssistant:`Connecting to your assistant…`,rowActionsAriaLabel:`Actions for {name}`,removeFromDevice:`Remove from this device…`,selfHosted:`Self-hosted`,selfHostedWithHost:`Self-hosted · {host}`},hatchingScreen:{apiKeyFailed:`Your API key didn't work`,genericFailure:`Something went wrong`,localFallbackPitch:`Get started today with a local assistant`,updateApiKey:`Update API key`,ready:`Your assistant is ready!`,waking:`Waking up…`,wakingBody:`Hang tight, your assistant will have a few questions for you once it's up.`,progressAriaLabel:`Assistant startup progress`,phase:{initializing:`Getting things ready…`,provisioning:`Setting up your assistant…`,connecting:`Connecting to your assistant…`,resizing:`Setting up your machine…`,ready:`Ready`}},addRemoteOriginDialog:{title:`Add a Remote Assistant`,body:`Paste the https link your assistant’s pairing page gave you.`,addressLabel:`Assistant address`},connectAssistantDialog:{importedTitle:`Pairing Imported`,importedBody:`This pairing is access-only: its access expires and cannot renew itself. Re-run vellum pair on the assistant’s machine and import the new bundle when it expires.`,title:`Connect a Remote Assistant`,bundleLabel:`Pairing bundle`,nameLabel:`Name (optional)`,instruction:`On the assistant’s machine, run <code>vellum pair --url https://...</code> and paste the bundle here.`},connectRecoveryDialog:{repairTitle:`Repair Assistant?`,repairBody:`Repairing re-provisions this assistant’s authentication token. Any other devices or browser sessions connected to it will be signed out and need to reconnect.`,repairConfirm:`Repair`,authFailedTitle:`Can’t Authenticate Assistant`,authFailedBody:`The authentication token for {name} is missing or can no longer be refreshed, so this assistant can’t be connected. You can repair it, retire it, or pick a different assistant.`,wakeAndRepair:`Wake & Repair`,retire:`Retire Assistant`},consentControls:{whatsChanged:`What's changed`,privacyPreferences:`Privacy preferences`,analyticsLabel:`Share Analytics`,analyticsHelp:`Send aggregated product usage data`,diagnosticsLabel:`Share Diagnostics`,diagnosticsHelp:`Send crash reports, conversation traces, and session replay data`,agreements:`Agreements`,agreeTo:`I agree to the <link>{policy}</link>`},onboardingAutocomplete:{addOption:`Add “{value}”`,enterHint:`↵ Enter`,freeTextHint:`Type anything and press ↵ to add your own`},stepIndicator:{ariaLabel:`Step {current} of {total}`},googleCalendar:{authorizationFailed:`Failed to start Google Calendar authorization.`},introductionScreen:{greetingNamed:`Hey, {name}!`,greeting:`Hey!`,introNamed:`I’m {name}, your new AI assistant.`,intro:`I’m your new AI assistant.`},pitchStep:{setupLine:`You’ve used AI that just answers questions.`,helpLine:`The more I help,`,punchLine:`I’m different.`,betterLine:`the better I get,`,lessLine:`and the less you have to do.`},createPersonalityStep:{title:`Create my personality`,lockedBody:`Personality locked, chat with your assistant to make any more updates`,axisAriaLabel:`{left} to {right}`,axes:{companionCoworker:{left:`Companion`,right:`Coworker`},genzBoomer:{left:`Gen Z`,right:`Baby Boomer`},executeCollaborate:{left:`Independent`,right:`Collaborative`},playfulSerious:{left:`Playful`,right:`Serious`},politeUnfiltered:{left:`Polite`,right:`Unfiltered`}}},giveMeAFaceScreen:{title:`Give me a face and a name`,previousCharacter:`Previous character`,nextCharacter:`Next character`,namePlaceholder:`Name your assistant`,nameAriaLabel:`Assistant name`,editName:`Edit name`,shuffle:`Shuffle name and appearance`,hearVoice:`Hear my voice`,stopVoice:`Stop the voice sample`},integrationStep:{title:`Here are some free credits<br></br> to get started.`},researchOnboardingScreen:{title:`Let's start with you.`,body:`A few details so I can get to know you.`,firstNameLabel:`What should I call you?`,firstNamePlaceholder:`Your name`,lastNameLabel:`And your last name?`,lastNamePlaceholder:`Your last name (optional)`,roleLabel:`Your role`,rolePlaceholder:`What do you do for work?`,hobbiesLabel:`Any hobbies?`,hobbiesPlaceholder:`Cars, books, growing tomatoes?`},letsChatTomorrowStep:{wakingTitle:`Waking up`,missingScopeTitle:`Access not enabled`,title:`Let me make this easy`,wakingBody:`Your assistant is getting ready`,missingScopeBody:`Check the box next to the Google Calendar permission so I can book the check-in.`,body:`Connect your Google Calendar so I can find time to check in and start helping.`,startingAssistant:`Starting assistant…`,waitingAuthorization:`Waiting for authorization…`,connectCalendar:`Connect Calendar →`},existingAssistantStep:{titleNamed:`{name} is already up and running`,title:`Your assistant is already up and running`,bodyNamed:`You two have history: a personality, memories, and past conversations. Running setup again would overwrite who {name} is now.`,body:`You two have history: a personality, memories, and past conversations. Running setup again would overwrite who your assistant is now.`,keepNamed:`Keep {name} and start chatting`,keep:`Keep your assistant and start chatting`,redoNamed:`Start over and rebuild {name}'s personality`,redo:`Start over and rebuild its personality`},checkinConnectScreen:{title:`Let's chat tomorrow`,body:`Add a meeting in your calendar so we can pick up where we left off.`,permissionBody:`{name} will add a single Day 2 Check-in event. It gets permission to manage your calendar events and see your email address, not your inbox or files, and you can disconnect at any time.`,unnamedAssistant:`your assistant`,waitingAuthorization:`Waiting for authorization...`,connectGoogleCalendar:`Connect Google Calendar`},meetingCreatedStep:{titleWithTime:`Check-in scheduled for tomorrow at {time}!`,title:`Check-in scheduled!`},lookingYouUpStep:{searching:`Searching the web to get to know you…`,readingProfiles:`Reading public profiles…`,skimming:`Skimming the highlights…`,connectingDots:`Connecting the dots…`,piecing:`Piecing it together…`,almostThere:`Almost there…`},finishingUpStep:{updatingPersonality:`Updating my personality…`,findingVoice:`Finding my voice…`,gettingIntoCharacter:`Getting into character…`,almostThere:`Almost there…`},researchResultsStep:{title:`This is what I found about you`,bodyLoadingWithClaims:`Still checking the rest. You can review these as they come in.`,bodyReadyWithClaims:`I searched the web. Feel free to remove anything that isn’t true.`,bodyLoadingEmpty:`Still putting this together…`,bodyReadyEmpty:`I didn’t turn up much, we can fill it in as we chat.`,removeClaim:`Remove "{claim}"`,notMe:`This is not me`,stillSearching:`Still searching…`},suggestionsStep:{title:`Here’s what we could do first`,pickOne:`Pick one to jump in, or start your own thing. <skip>Skip to Chat</skip>`,loading:`Putting together a few ideas…`,alreadySetUp:`Already set up the <plugins></plugins> {count, plural, one {plugin} other {plugins}} to help with your work`,listAnd:` and `,listCommaAnd:`, and `,listComma:`, `,fallbacks:{brief:{suggestion:`I'll pull together a quick brief on what's new in your field`,prompt:`Give me a quick brief on what's new in my field right now.`},weekly:{suggestion:`I'll send a weekly briefing on news in your space`,prompt:`Set up a weekly briefing on news in my space.`},week:{suggestion:`I'll help you get on top of your week`,prompt:`Help me get on top of my week.`},draft:{suggestion:`I'll draft something from a few rough notes`,prompt:`Draft something from a few rough notes I'll give you.`}}},letsChatReadyStep:{title:`You’re all set`,setupNote:`I’ve set myself up with plugins around who you are.`,letsChat:`Let's chat`}},pn={pairingPage:{openInApp:`Open in the Vellum app`,continueInBrowser:`Continue in this browser`,pairingCode:`Pairing code`,expiresAt:`Expires {time}.`,cancel:`Cancel`}},mn={terminalToolbar:{heading:`Terminal`,recoveryTitle:`Recovery Mode active, session connected to the debug terminal`,recoveryTag:`Recovery`,clearTitle:`Clear terminal output`,clear:`Clear`,disconnectTitle:`Disconnect terminal session`,disconnect:`Disconnect`,connectTitle:`Connect terminal session`,connect:`Connect`,statusAria:`Terminal status: {status}`},terminalStatus:{idle:`Idle`,connecting:`Connecting`,connected:`Connected`,reconnecting:`Reconnecting`,error:`Error`,closed:`Closed`},terminalConsole:{consoleAria:`Terminal console`}},hn={workspaceTree:{heading:`Files`,newFile:`New File`,newFolder:`New Folder`,delete:`Delete`,rename:`Rename`,renaming:`Renaming…`,create:`Create`,creating:`Creating…`,creatingHeading:`Create new`,createTriggerAria:`Create new file or folder`,createTriggerTitle:`New file or folder`,nameLabel:`Name`,nameError:`Enter a single file or folder name without slashes.`,cancel:`Cancel`,sortByNameAria:`Sort by name`,sortBySizeAria:`Sort by size`,sortedBySizeTitle:`Sorted by size, switch to name`,sortedByNameTitle:`Sorted by name, switch to size`,hideHiddenAria:`Hide hidden files`,showHiddenAria:`Show hidden files`,searchPlaceholder:`Search files`,clearSearchAria:`Clear search`,noFilesFound:`No files found`,deleteFolderTitle:`Delete Folder`,deleteFileTitle:`Delete File`,deleteFileMessage:`Are you sure you want to delete <name>{name}</name>? This cannot be undone.`,deleteFolderMessage:`Are you sure you want to delete <name>{name}</name> and all of its contents? This cannot be undone.`,deleting:`Deleting…`},workspaceBrowser:{drawerTitle:`Files`},workspaceFileViewer:{download:`Download`,downloading:`Downloading…`,downloadFailed:`Download failed. Try again.`,preview:`Preview`,source:`Source`,modifiedLabel:`Modified:`,selectAFile:`Select a file to view`,browseFiles:`Browse files`,fileNotFound:`File not found`,saveFailed:`Save failed`,downloadAria:`Download {name}`}},gn={activityStepsPanel:{backAria:`Back to all steps`,backTooltip:`All steps`},addToChatSheet:{title:`Add to chat`,closeAriaLabel:`Close`,camera:`Camera`,gallery:`Photo Library`,files:`Files`},allowOptionsMenu:{allowAndCreateRule:`Allow & Create Rule`,trigger:`More allow options`},appAssetActions:{appExported:`App exported`,shareFailed:`Failed to share app`},assistantSideMenu:{bulkActionMembersFailed:`Couldn't load every conversation in this section. Try again.`},cacheBreakpointMapCard:{description:`Where the {count, plural, one {# cache breakpoint} other {# cache breakpoints}} fell across this request's prefix, and which segments were read versus re-created.`,estimatedTokens:`≈ {count} tokens`,fullMissBody:`Every segment was re-created this turn. Compare with the previous turn in the cache diff above to find the block that changed.`,fullMissTitle:`Full cache miss`,loadError:`Couldn't load the request payload to map cache breakpoints.`,loading:`Loading the request payload to map cache breakpoints…`,noBreakpoints:`This request carried no cache breakpoints - prompt caching was disabled for the call.`,splitEstimatedNote:` The read/created split is attributed by segment size; the provider reports only the totals.`,statusCreated:`Re-created`,statusRead:`Read from cache`,statusUnknown:`Cached`,title:`Cache breakpoints`,tokenEstimateNote:`Token counts are estimated from text length.`},cacheDiffCard:{changedLabel:`Changed`,changedMessageFallback:`a message`,chipMessages:`Messages`,chipModel:`Model`,chipSettings:`Settings`,chipSystem:`System`,chipTools:`Tools`,currentModelFallback:`this model`,description:`What changed since the previous turn's request - the block that re-created the prompt cache.`,diffAnyway:`Diff anyway ({lineCount} lines)`,diffLabel:`{label} diff`,diffLargeDefault:`The changed text is large, so it isn't diffed by default.`,diffStillTooLarge:`Still too large to diff here (over {maxLines} lines) - open the Raw tab for the full payload.`,diffTooLarge:`The changed text is too large to diff here - open the Raw tab for the full payload.`,loadPreviousCallError:`Couldn't load the previous call to diff against.`,loadingPreviousCall:`Loading the previous call to compare…`,messageStatsAppended:`{count} appended`,messageStatsLeading:`Leading messages: {parts}`,messageStatsRemoved:`{count} removed`,messageStatsShared:`{count} shared`,previousModelFallback:`the previous model`,previousPromptUnavailable:`The previous call's prompt isn't available to compare.`,showLess:`Show less`,showMoreDiffLines:`Show {count} more diff line(s)`,statusMessagesEarlierBody:`{label} #{index} differs from the previous turn, so everything cached after it is re-processed this turn.`,statusMessagesEarlierTitle:`An earlier message changed`,statusMessagesHistoryBody:`{removedCount} earlier message(s) are gone this turn (likely history compaction), so the cached message prefix no longer matches.`,statusMessagesHistoryTitle:`Message history changed`,statusModelBody:`This turn used {current} but the previous turn used {previous}. A different model can't reuse the previous prompt cache, so the whole prompt is re-created.`,statusModelTitle:`Model changed`,statusPrefixUnchangedBodyAppended:`The cached prefix matches the previous turn and {count} new message(s) were appended. A cache miss here points to cache TTL expiry rather than changed content.`,statusPrefixUnchangedBodyIdentical:`The cached prefix is identical to the previous turn. A cache miss here points to cache TTL expiry rather than changed content.`,statusPrefixUnchangedTitle:`Prompt prefix unchanged`,statusSettingsBody:`Only request settings (e.g. temperature) differ from the previous turn. For most providers this alone won't bust the prompt cache.`,statusSettingsTitle:`Request settings changed`,statusSystemBody:`Part of the system prompt changed since the previous turn. Volatile content here - a timestamp, memory, or a per-turn block - re-creates the cache every turn.`,statusSystemTitle:`System prompt changed`,statusToolsBody:`The tool set or its definitions differ from the previous turn. Tools sit at the front of the cached prefix, so any change here re-creates the cache before it reaches the system prompt and messages.`,statusToolsTitle:`Tool definitions changed`,title:`Cache diff`,unchangedLines:`⋯ {count} unchanged line(s)`},cacheHealthCard:{barAriaLabel:`Prompt cache breakdown of {total} tokens: {segments} ({percent} cached).`,barSegment:`{count} {label}`,cached:`cached`,description:`How much of this call's prompt was served from the prompt cache.`,segmentCreated:`Re-created`,segmentFresh:`Fresh input`,segmentRead:`Read from cache`,statusFullMissBody:`None of this call's prompt was read from cache.`,statusFullMissReCreatedSuffix:` {count} tokens were written to the cache this turn but none were reused - this usually means the cached prefix changed since the previous turn.`,statusFullMissTitle:`Full cache miss`,statusHealthyBody:`{percent} of this call's prompt ({count} tokens) was served from cache.`,statusHealthyTitle:`Healthy cache reuse`,statusPartialBody:`{percent} of this call's prompt ({count} tokens) was served from cache; the rest was re-processed this turn.`,statusPartialTitle:`Partial cache reuse`,title:`Cache health`,unavailableNote:`This call didn't report prompt-cache usage.`,unavailableNoteForProvider:`This call didn't report prompt-cache usage for {provider}.`},callRail:{callCount:`{count, plural, one {# LLM call} other {# LLM calls}}`,callLabel:`Call {number}`,compaction:`Compaction`,cost:`Cost`,empty:`No LLM calls recorded.`,failed:`Failed`,latest:`Latest`,navAriaLabel:`LLM calls`,syntheticAgentLoopError:`Agent loop error`,syntheticAgentLoopErrorWithReason:`Agent loop error · {reason}`,syntheticYield:`Yield · compaction couldn't fit next step`,unrecognizedCall:`Unrecognized call`},chatComposer:{addToChat:`Add to chat`,askAssistantPlaceholder:`Ask {assistantName}`,disclaimer:`Vellum uses external AI models and can make mistakes`},compactionTab:{compactedMessages:`{count} compacted`,compactedPreserved:`Compacted / preserved`,contextTokens:`Context tokens`,duration:`Duration`,durationMs:`{count} ms`,emptyBody:`A compaction is attributed to the call that ran right after it. If you expect one here, check that the conversation crossed its context budget just before this call.`,emptyTitle:`No compaction is tied to this call`,eventIndex:` · {index} of {totalCount}`,hideSummaryText:`Hide summary text`,loadFailedDefault:`Failed to load compaction.`,loadFailedTitle:`Failed to load`,loading:`Loading compaction…`,messageRange:`{before} → {after}`,messages:`Messages`,outcomeCompacted:`Compacted`,outcomeFailed:`Compaction failed`,outcomeFailedDetail:`The summarizer call errored, so the context was left intact.`,outcomeNoChange:`No change`,outcomeUnavailable:`Outcome unavailable`,outcomeUnavailableDetail:`Detailed before/after metrics weren't recorded for this compaction.`,preservedMessages:`{count} preserved`,reductionRatio:`{ratio}× smaller`,retry:`Retry`,showSummaryText:`Show summary text`,summarizerUsage:`{input} in / {output} out`,summaryCost:`Summary cost`,summaryModel:`Summary model`,tokenRange:`{before} → {after}`,tokenRangeWithReduction:`{before} → {after} ({reduction})`,trigger:`Trigger`},composerSettingsMenu:{profileSwitchFailed:`Profile created, but couldn't switch to it`,profileSwitchFallback:`Failed to switch profile. Please try again.`},conversationActions:{archive:`Archive`,copyConversation:`Copy Full Conversation`,copyConversationId:`Copy conversation ID`,forkConversation:`Fork Conversation`,inspect:`Analyze Conversation`,markRead:`Mark as read`,markUnread:`Mark as unread`,moveToGroup:`Move to group`,newGroup:`New group…`,openInNewWindow:`Open in New Window`,pin:`Pin`,refresh:`Refresh`,removeFromGroup:`Remove from group`,rename:`Rename`,shareFeedback:`Share Feedback`,triggerAriaLabel:`Conversation actions`,unarchive:`Unarchive`,unpin:`Unpin`},conversationActionsSheet:{closeAriaLabel:`Close`,title:`Conversation Actions`},conversationAssets:{ariaLabel:`Conversation assets, {count, plural, one {# item} other {# items}}`,ariaLabelUnseen:`Conversation assets, {count, plural, one {# item} other {# items}} (unseen changes)`,heading:`Assets`,label:`{count, plural, one {# asset} other {# assets}}`},copyButton:{copied:`Copied`,copyFailed:`Could not copy to the clipboard.`},copyIdToClipboard:{conversationCopied:`Conversation ID copied to clipboard.`,conversationFailed:`Couldn't copy the conversation ID.`,groupCopied:`Group ID copied to clipboard.`,groupFailed:`Couldn't copy the group ID.`},detailPanelStopButton:{tooltip:`Stop`},documentAssetActions:{pdfDownloadFailed:`Failed to download PDF`},exportProgressModal:{cancel:`Cancel`,close:`Close`,defaultError:`Failed to export inspector data.`,descriptionDone:`Your download should have started automatically.`,descriptionError:`Something went wrong while collecting the export.`,descriptionRunning:`Collecting provider payloads and normalized context. This can take a moment for long conversations.`,done:`Done`,progressAriaLabel:`Export progress`,retry:`Retry`,statusDone:`Done`,statusPackaging:`Packaging ZIP…`,statusProgress:`{completed} of {total} calls`,titleDone:`Export complete`,titleError:`Export failed`,titleRunning:`Exporting inspector data`},fileDownload:{failed:`Failed to download file`},inspectPage:{accessDenied:`Inspector is available to Vellum staff, or when the settings-developer-nav developer flag is enabled.`,allMessages:`All messages`,back:`Back`,backToConversationAria:`Back to conversation`,chooseCall:`Choose a call from the rail to inspect its context.`,conversationScopeSubtitle:`Showing every LLM call recorded for this conversation.`,detailLoadFailed:`Failed to load this call’s normalized context.`,emptyBodyConversation:`Either no message in the conversation was produced by an LLM call or the request logs were trimmed by retention.`,emptyBodyMessage:`Either this message wasn’t produced by an LLM call or its request logs were trimmed by retention.`,emptyTitleConversation:`No LLM calls recorded for this conversation.`,emptyTitleMessage:`No LLM calls recorded for this message.`,enableLogging:`Enable logging`,enableLoggingFailed:`Failed to enable logging`,enableLoggingFailedWithMessage:`Failed to enable logging ({message})`,enabling:`Enabling…`,exportFailed:`Failed to export inspector data`,exportZip:`Export ZIP`,exportZipAria:`Export inspector data as ZIP`,exporting:`Exporting…`,filterToMessage:`Filter to message:`,llmCallCount:`{count, plural, one {1 LLM call} other {# LLM calls}}`,loadContextFailed:`Failed to load LLM context.`,loadFailedTitle:`Failed to load`,loading:`Loading…`,loggingDisabledBody:`Request and response payloads aren’t being recorded, so there’s nothing to inspect. Enable logging to capture future LLM calls.`,loggingDisabledTitle:`LLM request logging is off`,loggingEnabledToast:`LLM request logging enabled`,messageOptionDeepLink:`Message {messageId}`,messageOptionNoText:`{index}. (no text)`,messageOptionWithPreview:`{index}. {preview}`,retry:`Retry`,scopedToOneMessage:`Scoped to one message · `,scopedToTurn:`Scoped to turn {index} of {count} · `,title:`LLM Context Inspector`},llmCallErrorCard:{chipCode:`Code`,chipProvider:`Provider`,chipRequestId:`Request ID`,chipStatus:`Status`,chipType:`Type`,chipUpstreamCode:`Upstream code`,chipUpstreamParam:`Upstream param`,chipUpstreamType:`Upstream type`,noResponse:`The provider rejected this call and returned no response.`,title:`Call failed`},localFileEmbed:{pictureInPictureUnavailable:`Picture in Picture isn't available`},localFileLink:{unavailable:`This file isn't available here`},memoryRouterPlaygroundPage:{addOlderPairButton:`+ Add older pair`,assistantReplyLabel:`[assistant]: reply`,assistantReplyPlaceholder:`Assistant's reply that came before the user message below.`,configTitle:`Config {paneId}`,conversationalContextTitle:`Conversational context (shared by both panes)`,customPromptPlaceholder:`Custom router system prompt. Available placeholders:
|
|
8
|
+
Run it in the background and tell me when it's done, or if something blocks.`,enable:`Turn my memory back on. I'd like you to start remembering things from our conversations again.`}}},fn={actions:{continue:`Continue`,back:`Back`,forward:`Forward`,cancel:`Cancel`,start:`Start`,add:`Add`,adding:`Adding…`,connect:`Connect`,connecting:`Connecting…`,tryAgain:`Try again`,remove:`Remove {value}`,logIn:`Log In`,logOut:`Log out`,loginToUse:`Log in to use`,downloadMacApp:`Download the macOS app`,claim:`Claim`,skipForNow:`Skip for now`,starting:`Starting…`},welcome:{title:`Welcome to Vellum`,body:`Your own personal intelligence is just a step away.`,continueWithoutAccount:`Continue without account`},startScreen:{createAssistant:`Create your assistant`},privacyScreen:{title:`Before You Start`,body:`Choose your privacy preferences. You can update these anytime in the Settings.`,skipToChat:`Skip to chat`},hostingScreen:{title:`Hosting`,body:`Choose where you want your assistant to live.`,needHelp:`Need help deciding?`,optionsAriaLabel:`Hosting options`},apiKeyScreen:{title:`Connect a Model Provider`,body:`Choose the model provider your assistant should use.`,providerLabel:`Provider`,modelLabel:`Model`,baseUrlLabel:`Base URL`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,modelsHelp:`Comma-separated model identifiers exposed by your endpoint.`,apiKeyLabel:`{provider} API Key`,apiKeyPlaceholder:`Enter your API key`,noKeyPrompt:`Don't have it?`,getKeyLink:`Get an API key here`},selectAssistantScreen:{title:`Choose an Assistant`,listAriaLabel:`Assistants`,createNew:`Create a new assistant`,connectRemote:`Connect a remote assistant`,addRemote:`Add a remote assistant`,unnamedAssistant:`the assistant`,connectingToAssistant:`Connecting to your assistant…`,rowActionsAriaLabel:`Actions for {name}`,removeFromDevice:`Remove from this device…`,selfHosted:`Self-hosted`,selfHostedWithHost:`Self-hosted · {host}`,currentWithHost:`Current · {host}`,remoteWithHost:`Remote · {host}`},hatchingScreen:{apiKeyFailed:`Your API key didn't work`,genericFailure:`Something went wrong`,localFallbackPitch:`Get started today with a local assistant`,updateApiKey:`Update API key`,ready:`Your assistant is ready!`,waking:`Waking up…`,wakingBody:`Hang tight, your assistant will have a few questions for you once it's up.`,progressAriaLabel:`Assistant startup progress`,phase:{initializing:`Getting things ready…`,provisioning:`Setting up your assistant…`,connecting:`Connecting to your assistant…`,resizing:`Setting up your machine…`,ready:`Ready`}},addRemoteOriginDialog:{title:`Add a Remote Assistant`,body:`Paste the https link your assistant’s pairing page gave you.`,addressLabel:`Assistant address`},connectAssistantDialog:{importedTitle:`Pairing Imported`,importedBody:`This pairing is access-only: its access expires and cannot renew itself. Re-run vellum pair on the assistant’s machine and import the new bundle when it expires.`,title:`Connect a Remote Assistant`,bundleLabel:`Pairing bundle`,nameLabel:`Name (optional)`,instruction:`On the assistant’s machine, run <code>vellum pair --url https://...</code> and paste the bundle here.`},connectRecoveryDialog:{repairTitle:`Repair Assistant?`,repairBody:`Repairing re-provisions this assistant’s authentication token. Any other devices or browser sessions connected to it will be signed out and need to reconnect.`,repairConfirm:`Repair`,authFailedTitle:`Can’t Authenticate Assistant`,authFailedBody:`The authentication token for {name} is missing or can no longer be refreshed, so this assistant can’t be connected. You can repair it, retire it, or pick a different assistant.`,wakeAndRepair:`Wake & Repair`,retire:`Retire Assistant`},consentControls:{whatsChanged:`What's changed`,privacyPreferences:`Privacy preferences`,analyticsLabel:`Share Analytics`,analyticsHelp:`Send aggregated product usage data`,diagnosticsLabel:`Share Diagnostics`,diagnosticsHelp:`Send crash reports, conversation traces, and session replay data`,agreements:`Agreements`,agreeTo:`I agree to the <link>{policy}</link>`},onboardingAutocomplete:{addOption:`Add “{value}”`,enterHint:`↵ Enter`,freeTextHint:`Type anything and press ↵ to add your own`},stepIndicator:{ariaLabel:`Step {current} of {total}`},googleCalendar:{authorizationFailed:`Failed to start Google Calendar authorization.`},introductionScreen:{greetingNamed:`Hey, {name}!`,greeting:`Hey!`,introNamed:`I’m {name}, your new AI assistant.`,intro:`I’m your new AI assistant.`},pitchStep:{setupLine:`You’ve used AI that just answers questions.`,helpLine:`The more I help,`,punchLine:`I’m different.`,betterLine:`the better I get,`,lessLine:`and the less you have to do.`},createPersonalityStep:{title:`Create my personality`,lockedBody:`Personality locked, chat with your assistant to make any more updates`,axisAriaLabel:`{left} to {right}`,axes:{companionCoworker:{left:`Companion`,right:`Coworker`},genzBoomer:{left:`Gen Z`,right:`Baby Boomer`},executeCollaborate:{left:`Independent`,right:`Collaborative`},playfulSerious:{left:`Playful`,right:`Serious`},politeUnfiltered:{left:`Polite`,right:`Unfiltered`}}},giveMeAFaceScreen:{title:`Give me a face and a name`,previousCharacter:`Previous character`,nextCharacter:`Next character`,namePlaceholder:`Name your assistant`,nameAriaLabel:`Assistant name`,editName:`Edit name`,shuffle:`Shuffle name and appearance`,hearVoice:`Hear my voice`,stopVoice:`Stop the voice sample`},integrationStep:{title:`Here are some free credits<br></br> to get started.`},researchOnboardingScreen:{title:`Let's start with you.`,body:`A few details so I can get to know you.`,firstNameLabel:`What should I call you?`,firstNamePlaceholder:`Your name`,lastNameLabel:`And your last name?`,lastNamePlaceholder:`Your last name (optional)`,roleLabel:`Your role`,rolePlaceholder:`What do you do for work?`,hobbiesLabel:`Any hobbies?`,hobbiesPlaceholder:`Cars, books, growing tomatoes?`},letsChatTomorrowStep:{wakingTitle:`Waking up`,missingScopeTitle:`Access not enabled`,title:`Let me make this easy`,wakingBody:`Your assistant is getting ready`,missingScopeBody:`Check the box next to the Google Calendar permission so I can book the check-in.`,body:`Connect your Google Calendar so I can find time to check in and start helping.`,startingAssistant:`Starting assistant…`,waitingAuthorization:`Waiting for authorization…`,connectCalendar:`Connect Calendar →`},existingAssistantStep:{titleNamed:`{name} is already up and running`,title:`Your assistant is already up and running`,bodyNamed:`You two have history: a personality, memories, and past conversations. Running setup again would overwrite who {name} is now.`,body:`You two have history: a personality, memories, and past conversations. Running setup again would overwrite who your assistant is now.`,keepNamed:`Keep {name} and start chatting`,keep:`Keep your assistant and start chatting`,redoNamed:`Start over and rebuild {name}'s personality`,redo:`Start over and rebuild its personality`},checkinConnectScreen:{title:`Let's chat tomorrow`,body:`Add a meeting in your calendar so we can pick up where we left off.`,permissionBody:`{name} will add a single Day 2 Check-in event. It gets permission to manage your calendar events and see your email address, not your inbox or files, and you can disconnect at any time.`,unnamedAssistant:`your assistant`,waitingAuthorization:`Waiting for authorization...`,connectGoogleCalendar:`Connect Google Calendar`},meetingCreatedStep:{titleWithTime:`Check-in scheduled for tomorrow at {time}!`,title:`Check-in scheduled!`},lookingYouUpStep:{searching:`Searching the web to get to know you…`,readingProfiles:`Reading public profiles…`,skimming:`Skimming the highlights…`,connectingDots:`Connecting the dots…`,piecing:`Piecing it together…`,almostThere:`Almost there…`},finishingUpStep:{updatingPersonality:`Updating my personality…`,findingVoice:`Finding my voice…`,gettingIntoCharacter:`Getting into character…`,almostThere:`Almost there…`},researchResultsStep:{title:`This is what I found about you`,bodyLoadingWithClaims:`Still checking the rest. You can review these as they come in.`,bodyReadyWithClaims:`I searched the web. Feel free to remove anything that isn’t true.`,bodyLoadingEmpty:`Still putting this together…`,bodyReadyEmpty:`I didn’t turn up much, we can fill it in as we chat.`,removeClaim:`Remove "{claim}"`,notMe:`This is not me`,stillSearching:`Still searching…`},suggestionsStep:{title:`Here’s what we could do first`,pickOne:`Pick one to jump in, or start your own thing. <skip>Skip to Chat</skip>`,loading:`Putting together a few ideas…`,alreadySetUp:`Already set up the <plugins></plugins> {count, plural, one {plugin} other {plugins}} to help with your work`,listAnd:` and `,listCommaAnd:`, and `,listComma:`, `,fallbacks:{brief:{suggestion:`I'll pull together a quick brief on what's new in your field`,prompt:`Give me a quick brief on what's new in my field right now.`},weekly:{suggestion:`I'll send a weekly briefing on news in your space`,prompt:`Set up a weekly briefing on news in my space.`},week:{suggestion:`I'll help you get on top of your week`,prompt:`Help me get on top of my week.`},draft:{suggestion:`I'll draft something from a few rough notes`,prompt:`Draft something from a few rough notes I'll give you.`}}},letsChatReadyStep:{title:`You’re all set`,setupNote:`I’ve set myself up with plugins around who you are.`,letsChat:`Let's chat`}},pn={pairingPage:{openInApp:`Open in the Vellum app`,continueInBrowser:`Continue in this browser`,pairingCode:`Pairing code`,expiresAt:`Expires {time}.`,cancel:`Cancel`}},mn={terminalToolbar:{heading:`Terminal`,recoveryTitle:`Recovery Mode active, session connected to the debug terminal`,recoveryTag:`Recovery`,clearTitle:`Clear terminal output`,clear:`Clear`,disconnectTitle:`Disconnect terminal session`,disconnect:`Disconnect`,connectTitle:`Connect terminal session`,connect:`Connect`,statusAria:`Terminal status: {status}`},terminalStatus:{idle:`Idle`,connecting:`Connecting`,connected:`Connected`,reconnecting:`Reconnecting`,error:`Error`,closed:`Closed`},terminalConsole:{consoleAria:`Terminal console`}},hn={workspaceTree:{heading:`Files`,newFile:`New File`,newFolder:`New Folder`,delete:`Delete`,rename:`Rename`,renaming:`Renaming…`,create:`Create`,creating:`Creating…`,creatingHeading:`Create new`,createTriggerAria:`Create new file or folder`,createTriggerTitle:`New file or folder`,nameLabel:`Name`,nameError:`Enter a single file or folder name without slashes.`,cancel:`Cancel`,sortByNameAria:`Sort by name`,sortBySizeAria:`Sort by size`,sortedBySizeTitle:`Sorted by size, switch to name`,sortedByNameTitle:`Sorted by name, switch to size`,hideHiddenAria:`Hide hidden files`,showHiddenAria:`Show hidden files`,searchPlaceholder:`Search files`,clearSearchAria:`Clear search`,noFilesFound:`No files found`,deleteFolderTitle:`Delete Folder`,deleteFileTitle:`Delete File`,deleteFileMessage:`Are you sure you want to delete <name>{name}</name>? This cannot be undone.`,deleteFolderMessage:`Are you sure you want to delete <name>{name}</name> and all of its contents? This cannot be undone.`,deleting:`Deleting…`},workspaceBrowser:{drawerTitle:`Files`},workspaceFileViewer:{download:`Download`,downloading:`Downloading…`,downloadFailed:`Download failed. Try again.`,preview:`Preview`,source:`Source`,modifiedLabel:`Modified:`,selectAFile:`Select a file to view`,browseFiles:`Browse files`,fileNotFound:`File not found`,saveFailed:`Save failed`,downloadAria:`Download {name}`}},gn={activityStepsPanel:{backAria:`Back to all steps`,backTooltip:`All steps`},addToChatSheet:{title:`Add to chat`,closeAriaLabel:`Close`,camera:`Camera`,gallery:`Photo Library`,files:`Files`,pickFailed:`Could not add that file. Please try again.`,tooLarge:`{count, plural, one {# file is too large to attach} other {# files are too large to attach}}`,pickFull:`{count, plural, one {# file did not fit in this batch. Add it on its own.} other {# files did not fit in this batch. Add them separately.}}`},allowOptionsMenu:{allowAndCreateRule:`Allow & Create Rule`,trigger:`More allow options`},appAssetActions:{appExported:`App exported`,shareFailed:`Failed to share app`},assistantSideMenu:{bulkActionMembersFailed:`Couldn't load every conversation in this section. Try again.`},assistantSwitcher:{collapse:`Hide assistants`,currentAssistant:`{name}, current assistant`,expand:`Switch assistant`,switchFailed:`Couldn't switch assistants. Try again.`,switchTo:`Switch to {name}`,unnamedAssistant:`Unnamed assistant`},cacheBreakpointMapCard:{description:`Where the {count, plural, one {# cache breakpoint} other {# cache breakpoints}} fell across this request's prefix, and which segments were read versus re-created.`,estimatedTokens:`≈ {count} tokens`,fullMissBody:`Every segment was re-created this turn. Compare with the previous turn in the cache diff above to find the block that changed.`,fullMissTitle:`Full cache miss`,loadError:`Couldn't load the request payload to map cache breakpoints.`,loading:`Loading the request payload to map cache breakpoints…`,noBreakpoints:`This request carried no cache breakpoints - prompt caching was disabled for the call.`,splitEstimatedNote:` The read/created split is attributed by segment size; the provider reports only the totals.`,statusCreated:`Re-created`,statusRead:`Read from cache`,statusUnknown:`Cached`,title:`Cache breakpoints`,tokenEstimateNote:`Token counts are estimated from text length.`},cacheDiffCard:{changedLabel:`Changed`,changedMessageFallback:`a message`,chipMessages:`Messages`,chipModel:`Model`,chipSettings:`Settings`,chipSystem:`System`,chipTools:`Tools`,currentModelFallback:`this model`,description:`What changed since the previous turn's request - the block that re-created the prompt cache.`,diffAnyway:`Diff anyway ({lineCount} lines)`,diffLabel:`{label} diff`,diffLargeDefault:`The changed text is large, so it isn't diffed by default.`,diffStillTooLarge:`Still too large to diff here (over {maxLines} lines) - open the Raw tab for the full payload.`,diffTooLarge:`The changed text is too large to diff here - open the Raw tab for the full payload.`,loadPreviousCallError:`Couldn't load the previous call to diff against.`,loadingPreviousCall:`Loading the previous call to compare…`,messageStatsAppended:`{count} appended`,messageStatsLeading:`Leading messages: {parts}`,messageStatsRemoved:`{count} removed`,messageStatsShared:`{count} shared`,previousModelFallback:`the previous model`,previousPromptUnavailable:`The previous call's prompt isn't available to compare.`,showLess:`Show less`,showMoreDiffLines:`Show {count} more diff line(s)`,statusMessagesEarlierBody:`{label} #{index} differs from the previous turn, so everything cached after it is re-processed this turn.`,statusMessagesEarlierTitle:`An earlier message changed`,statusMessagesHistoryBody:`{removedCount} earlier message(s) are gone this turn (likely history compaction), so the cached message prefix no longer matches.`,statusMessagesHistoryTitle:`Message history changed`,statusModelBody:`This turn used {current} but the previous turn used {previous}. A different model can't reuse the previous prompt cache, so the whole prompt is re-created.`,statusModelTitle:`Model changed`,statusPrefixUnchangedBodyAppended:`The cached prefix matches the previous turn and {count} new message(s) were appended. A cache miss here points to cache TTL expiry rather than changed content.`,statusPrefixUnchangedBodyIdentical:`The cached prefix is identical to the previous turn. A cache miss here points to cache TTL expiry rather than changed content.`,statusPrefixUnchangedTitle:`Prompt prefix unchanged`,statusSettingsBody:`Only request settings (e.g. temperature) differ from the previous turn. For most providers this alone won't bust the prompt cache.`,statusSettingsTitle:`Request settings changed`,statusSystemBody:`Part of the system prompt changed since the previous turn. Volatile content here - a timestamp, memory, or a per-turn block - re-creates the cache every turn.`,statusSystemTitle:`System prompt changed`,statusToolsBody:`The tool set or its definitions differ from the previous turn. Tools sit at the front of the cached prefix, so any change here re-creates the cache before it reaches the system prompt and messages.`,statusToolsTitle:`Tool definitions changed`,title:`Cache diff`,unchangedLines:`⋯ {count} unchanged line(s)`},cacheHealthCard:{barAriaLabel:`Prompt cache breakdown of {total} tokens: {segments} ({percent} cached).`,barSegment:`{count} {label}`,cached:`cached`,description:`How much of this call's prompt was served from the prompt cache.`,segmentCreated:`Re-created`,segmentFresh:`Fresh input`,segmentRead:`Read from cache`,statusFullMissBody:`None of this call's prompt was read from cache.`,statusFullMissReCreatedSuffix:` {count} tokens were written to the cache this turn but none were reused - this usually means the cached prefix changed since the previous turn.`,statusFullMissTitle:`Full cache miss`,statusHealthyBody:`{percent} of this call's prompt ({count} tokens) was served from cache.`,statusHealthyTitle:`Healthy cache reuse`,statusPartialBody:`{percent} of this call's prompt ({count} tokens) was served from cache; the rest was re-processed this turn.`,statusPartialTitle:`Partial cache reuse`,title:`Cache health`,unavailableNote:`This call didn't report prompt-cache usage.`,unavailableNoteForProvider:`This call didn't report prompt-cache usage for {provider}.`},callRail:{callCount:`{count, plural, one {# LLM call} other {# LLM calls}}`,callLabel:`Call {number}`,compaction:`Compaction`,cost:`Cost`,empty:`No LLM calls recorded.`,failed:`Failed`,latest:`Latest`,navAriaLabel:`LLM calls`,syntheticAgentLoopError:`Agent loop error`,syntheticAgentLoopErrorWithReason:`Agent loop error · {reason}`,syntheticYield:`Yield · compaction couldn't fit next step`,unrecognizedCall:`Unrecognized call`},chatComposer:{addToChat:`Add to chat`,askAssistantPlaceholder:`Ask {assistantName}`},compactionTab:{compactedMessages:`{count} compacted`,compactedPreserved:`Compacted / preserved`,contextTokens:`Context tokens`,duration:`Duration`,durationMs:`{count} ms`,emptyBody:`A compaction is attributed to the call that ran right after it. If you expect one here, check that the conversation crossed its context budget just before this call.`,emptyTitle:`No compaction is tied to this call`,eventIndex:` · {index} of {totalCount}`,hideSummaryText:`Hide summary text`,loadFailedDefault:`Failed to load compaction.`,loadFailedTitle:`Failed to load`,loading:`Loading compaction…`,messageRange:`{before} → {after}`,messages:`Messages`,outcomeCompacted:`Compacted`,outcomeFailed:`Compaction failed`,outcomeFailedDetail:`The summarizer call errored, so the context was left intact.`,outcomeNoChange:`No change`,outcomeUnavailable:`Outcome unavailable`,outcomeUnavailableDetail:`Detailed before/after metrics weren't recorded for this compaction.`,preservedMessages:`{count} preserved`,reductionRatio:`{ratio}× smaller`,retry:`Retry`,showSummaryText:`Show summary text`,summarizerUsage:`{input} in / {output} out`,summaryCost:`Summary cost`,summaryModel:`Summary model`,tokenRange:`{before} → {after}`,tokenRangeWithReduction:`{before} → {after} ({reduction})`,trigger:`Trigger`},composerSettingsMenu:{profileSwitchFailed:`Profile created, but couldn't switch to it`,profileSwitchFallback:`Failed to switch profile. Please try again.`},conversationActions:{archive:`Archive`,copyConversation:`Copy Full Conversation`,copyConversationId:`Copy conversation ID`,forkConversation:`Fork Conversation`,inspect:`Analyze Conversation`,markRead:`Mark as read`,markUnread:`Mark as unread`,moveToGroup:`Move to group`,newGroup:`New group…`,openInNewWindow:`Open in New Window`,pin:`Pin`,refresh:`Refresh`,removeFromGroup:`Remove from group`,rename:`Rename`,shareFeedback:`Share Feedback`,triggerAriaLabel:`Conversation actions`,unarchive:`Unarchive`,unpin:`Unpin`},conversationActionsSheet:{closeAriaLabel:`Close`,title:`Conversation Actions`},conversationAssets:{ariaLabel:`Conversation assets, {count, plural, one {# item} other {# items}}`,ariaLabelUnseen:`Conversation assets, {count, plural, one {# item} other {# items}} (unseen changes)`,heading:`Assets`,label:`{count, plural, one {# asset} other {# assets}}`},conversationStarterDock:{caption:`Try some suggestions:`},copyButton:{copied:`Copied`,copyFailed:`Could not copy to the clipboard.`},copyIdToClipboard:{conversationCopied:`Conversation ID copied to clipboard.`,conversationFailed:`Couldn't copy the conversation ID.`,groupCopied:`Group ID copied to clipboard.`,groupFailed:`Couldn't copy the group ID.`},detailPanelStopButton:{tooltip:`Stop`},documentAssetActions:{pdfDownloadFailed:`Failed to download PDF`},exportProgressModal:{cancel:`Cancel`,close:`Close`,defaultError:`Failed to export inspector data.`,descriptionDone:`Your download should have started automatically.`,descriptionError:`Something went wrong while collecting the export.`,descriptionRunning:`Collecting provider payloads and normalized context. This can take a moment for long conversations.`,done:`Done`,progressAriaLabel:`Export progress`,retry:`Retry`,statusDone:`Done`,statusPackaging:`Packaging ZIP…`,statusProgress:`{completed} of {total} calls`,titleDone:`Export complete`,titleError:`Export failed`,titleRunning:`Exporting inspector data`},fileDownload:{failed:`Failed to download file`},groupActions:{archiveAll:`Archive All…`,copyGroupId:`Copy group ID`,deleteGroup:`Delete group`,deleteGroupWithConversations:`Delete group…`,groupByChannel:`Group by channel`,markAllRead:`Mark All as Read`,moveSectionDown:`Move Section Down`,moveSectionUp:`Move Section Up`,rename:`Rename`,ungroup:`Ungroup`},groupActionsSheet:{title:`{name} actions`},inspectPage:{accessDenied:`Inspector is available when the Internal Thread Actions feature flag is enabled.`,allMessages:`All messages`,back:`Back`,backToConversationAria:`Back to conversation`,chooseCall:`Choose a call from the rail to inspect its context.`,conversationScopeSubtitle:`Showing every LLM call recorded for this conversation.`,detailLoadFailed:`Failed to load this call’s normalized context.`,emptyBodyConversation:`Either no message in the conversation was produced by an LLM call or the request logs were trimmed by retention.`,emptyBodyMessage:`Either this message wasn’t produced by an LLM call or its request logs were trimmed by retention.`,emptyTitleConversation:`No LLM calls recorded for this conversation.`,emptyTitleMessage:`No LLM calls recorded for this message.`,enableLogging:`Enable logging`,enableLoggingFailed:`Failed to enable logging`,enableLoggingFailedWithMessage:`Failed to enable logging ({message})`,enabling:`Enabling…`,exportFailed:`Failed to export inspector data`,exportZip:`Export ZIP`,exportZipAria:`Export inspector data as ZIP`,exporting:`Exporting…`,filterToMessage:`Filter to message:`,llmCallCount:`{count, plural, one {1 LLM call} other {# LLM calls}}`,loadContextFailed:`Failed to load LLM context.`,loadFailedTitle:`Failed to load`,loading:`Loading…`,loggingDisabledBody:`Request and response payloads aren’t being recorded, so there’s nothing to inspect. Enable logging to capture future LLM calls.`,loggingDisabledTitle:`LLM request logging is off`,loggingEnabledToast:`LLM request logging enabled`,messageOptionDeepLink:`Message {messageId}`,messageOptionNoText:`{index}. (no text)`,messageOptionWithPreview:`{index}. {preview}`,retry:`Retry`,scopedToOneMessage:`Scoped to one message · `,scopedToTurn:`Scoped to turn {index} of {count} · `,title:`LLM Context Inspector`},llmCallErrorCard:{chipCode:`Code`,chipProvider:`Provider`,chipRequestId:`Request ID`,chipStatus:`Status`,chipType:`Type`,chipUpstreamCode:`Upstream code`,chipUpstreamParam:`Upstream param`,chipUpstreamType:`Upstream type`,noResponse:`The provider rejected this call and returned no response.`,title:`Call failed`},localFileEmbed:{pictureInPictureUnavailable:`Picture in Picture isn't available`},localFileLink:{unavailable:`This file isn't available here`},memoryRouterPlaygroundPage:{addOlderPairButton:`+ Add older pair`,assistantReplyLabel:`[assistant]: reply`,assistantReplyPlaceholder:`Assistant's reply that came before the user message below.`,configTitle:`Config {paneId}`,conversationalContextTitle:`Conversational context (shared by both panes)`,customPromptPlaceholder:`Custom router system prompt. Available placeholders:
|
|
9
9
|
'{ASSISTANT_NAME}, {USER_NAME}, {PAGE_INDEX}'
|
|
10
|
-
Leave blank to use the bundled template. "Load default" seeds the textarea with the bundled body for editing.`,description:`Dry-run the v4 router with custom tier/batch overrides. Read-only - no rows are written to <code>memory_v2_injection_events</code> or <code>memory_v2_activation_logs</code>, and no activation state is mutated. Leave an override blank to inherit the live config value; enter <code>null</code> to explicitly disable a tier.`,diffLabel:`Diff`,diffValue:`{shared} shared · {unique} unique to this pane`,effectiveConfig:`Effective config`,emaScore:`EMA {score}`,empty:`(empty)`,emptySelectionHint:`The router returned an empty selection. Try a more specific query, or relax the override values.`,failedToRunSimulation:`Failed to run simulation`,firstTurnAssistantPlaceholder:`Leave blank for a first-turn scenario.`,inheritActive:`inherit active`,inheritActiveWithProfile:`inherit active ({profile})`,inheritPlaceholder:`inherit`,invalidOverrideInput:`Invalid override input`,justArrivedUserLabel:`Just-arrived [user]: message`,lastUserPlaceholder:`e.g. what should we ship next`,legendAOnly:`A only`,legendBOnly:`B only`,legendInBoth:`in both`,llmProfilesOverride:`llm.profiles override`,loadDefault:`Load default`,loading:`Loading…`,noPagesSelected:`No pages selected`,notAvailable:`Memory router playground is not available.`,nowBlockLabel:`'<now>' block`,nowDefaultPlaceholder:`Pre-filled with the live NOW.md. Edit to test alternate states.`,nowLoadingPlaceholder:`Loading current NOW.md…`,nullValue:`null`,overrideMustBePositiveInteger:`{fieldName} must be a positive integer or 'null' (got "{value}")`,overrideSuffix:` (override)`,pageCount:`{count, plural, one {# page} other {# pages}}`,pairLabel:`Pair {index} of {total}`,pairMostRecentSuffix:` · most recent`,paneTitle:`Pane {paneId}`,promptModeBundled:`bundled`,promptModeCustom:`custom`,rawApiExchange:`Raw API exchange`,recentPairsLabel:`Recent (assistant, user) pairs · oldest first`,reloadNowButton:`Reload live NOW.md`,removeButton:`Remove`,requestLabel:`Request (Pane {paneId})`,reset:`Reset`,responseLabel:`Response (Pane {paneId})`,routerFailure:`Router failure: {reason}`,runBoth:`Run both`,runPane:`Run {paneId}`,running:`Running…`,selectedLabel:`Selected`,selectedValue:`{count} (live max_page_ids: {maxPageIds})`,summary:`Summary`,summaryUserMessageLabel:`User message`,systemPrompt:`System prompt`,systemPromptConfigLabel:`system prompt`,tier1Label:`tier 1`,tier2Label:`tier 2`,tier3Label:`tier 3 · b{batch}`,title:`Memory Router Playground`,totalCandidatePagesLabel:`Total candidate pages`,userMessageLabel:`[user]: message`,userMessagePlaceholder:`User's message.`},memoryTab:{afterMergeLabel:`After merge`,breakdownCAssistantRerank:`c_assistant · rerank Δ_a`,breakdownCAssistantSim:`c_assistant · sim_a`,breakdownCNowSim:`c_now · sim_n`,breakdownCUserRerank:`c_user · rerank Δ_u`,breakdownCUserSim:`c_user · sim_u`,breakdownOwnActivation:`A_o (own)`,breakdownPriorActivation:`prior · d`,breakdownRerankScaledRaw:`+{scaled} (raw {raw})`,breakdownScaledRaw:`{scaled} (raw {raw})`,breakdownSource:`source`,breakdownSpreadDelta:`spread Δ`,breakdownStatus:`status`,candidateScores:`sem {semantic} · rec {recency}`,carriedPill:`Carried: {count}`,conceptActivationsSubtitle:"Sorted by final activation. Skill entries appear with the `skills/` slug prefix; expand a row for the activation breakdown.",conceptActivationsTitle:`Concept activations ({count})`,configCAssistant:`c_assistant`,configCNow:`c_now`,configCUser:`c_user`,configDDecay:`d (decay)`,configEpsilon:`epsilon`,configHops:`hops`,configKSharpening:`k (sharpening)`,configSubtitle:`Activation weights and selection thresholds.`,configTitle:`Config`,configTopK:`top_k`,copyAriaLabel:`Copy to clipboard`,copyAriaLabelCopied:`Copied`,copyButtonCopied:`Copied`,copyButtonCopy:`Copy`,copyErrorMessage:`Couldn't copy to clipboard.`,copyTitle:`Copy`,copyTitleCopied:`Copied!`,corePill:`Core: {count}`,degradationTitle:`Degradation`,fallbackSourcesLabel:`Fallback sources`,hybridSearchLabel:`Hybrid search`,inContextPill:`In context: {count}`,injectedMemoryContextTitle:`Injected memory context`,injectedPill:`Injected: {count}`,injectedTokensLabel:`Injected tokens`,latencyMs:`{ms} ms`,loading:`Loading…`,loggedMemorySelectionSubtitle:`Rendered from the v3 selection, not injected this turn.`,loggedMemorySelectionTitle:`Logged memory selection`,memoryDisabledDefaultReason:`Memory recall was disabled for this turn.`,memoryDisabledTitle:`Memory disabled`,missingValue:`-`,modelLabel:`Model`,no:`No`,noDataBody:`Memory recall information is not available for this message.`,noDataTitle:`No memory data`,noEntriesRanked:`No entries ranked.`,noPagesSelected:`No pages selected.`,notInjectedPill:`Not injected: {count}`,pageContentLabel:`page content`,pageNotFound:`Page not found on disk. Slug may reference a stale Qdrant entry.`,pillMemoryV2:`Memory V2`,pillMemoryV3:`Memory V3`,pillRecallV1:`Recall (v1)`,pinnedChip:`pinned`,pinnedPill:`Pinned: {count}`,providerLabel:`Provider`,queryContextSubtitle:`The text embedded as the search vector for semantic retrieval.`,queryContextTitle:`Query context`,reasonLabel:`Reason`,retrievalFunnelSubtitle:`How memories were filtered from semantic search to injection.`,retrievalFunnelTitle:`Retrieval funnel`,searchDetailsTitle:`Search details`,selectedLabel:`Selected`,selectedPagesSubtitle:`Pages v3 selected, tagged by the lane that surfaced them and the matched section (when a finder lane surfaced one).`,selectedPagesTitle:`Selected pages ({count})`,selectedPill:`Selected: {count}`,semanticHitsLabel:`Semantic hits`,semanticUnavailableLabel:`Semantic unavailable`,sparseDenseOnly:`Dense only`,sparseUsed:`Used`,sparseVectorsLabel:`Sparse vectors`,statusActive:`Active`,statusDegraded:`Degraded`,statusLabel:`Status`,statusSubtitle:`Provider, model, and latency for this recall.`,statusTitle:`Status`,tier1Label:`Tier 1`,tier2Label:`Tier 2`,topCandidatesSubtitle:`{count, plural, one {# candidate ranked by final score.} other {# candidates ranked by final score.}}`,topCandidatesTitle:`Top candidates`,totalLatencyLabel:`Total latency`,turnLevelRecallBody:`Memory recall runs once per turn. This data applies to all LLM calls for this message.`,turnLevelRecallTitle:`Turn-level recall`,turnPill:`Turn {turn}`,unavailable:`Unavailable`,unknown:`Unknown`,v2StatusInContext:`In context`,v2StatusInjected:`Injected`,v2StatusNotInjected:`Not injected`,v2StatusPageMissing:`Page missing`,v2TurnBody:`Spreading-activation memory pass that ranks concepts and skills for this turn.`,v2TurnTitle:`Memory - turn {turn} ({mode})`,v3LiveInjectionBody:`v3 is the live memory source this turn: the block below was injected into context (v2 suppressed).`,v3LiveInjectionTitle:`Memory V3 - live injection`,v3LoggedSelectionBody:`v3 is not the live memory source for this assistant: these selections were logged but not injected this turn; the turn's memory came from v2.`,v3LoggedSelectionTitle:`Memory V3 - logged selection (not injected)`,v3SourceCarried:`carried`,v3SourceCore:`core`,v3SourceL1L2:`L1+L2`,v3SourceNeedle:`needle`,yes:`Yes`},mobileCallSelector:{callOfTotal:`Call {number} of {total}`,llmCallCount:`{count, plural, one {1 LLM call} other {# LLM calls}}`,selectCallAria:`Select an LLM call to inspect`,sheetTitle:`Select a call`},overviewTab:{cacheTokensLabel:`Cache tokens`,conversationSubtitle:`Running totals across every priced LLM call so far.`,conversationTitle:`Conversation`,createdLabel:`Created`,durationLabel:`Duration`,estimatedCostLabel:`Estimated cost`,failedStatus:`Failed`,firstTokenKindLabel:`First token kind`,firstTokenLatencySubtitle:`Where this turn's time-to-first-token went, measured by the assistant.`,firstTokenLatencyTitle:`First-token latency`,inputTokensLabel:`Input tokens`,latencyMs:`{ms} ms`,loopExitReasonLabel:`Loop exit reason`,modelLabel:`Model`,normalizedMetadataSubtitle:`Provider, model, timestamps, and usage counts.`,normalizedMetadataTitle:`Normalized metadata`,normalizedSummaryUnavailableSubtitle:`This call still has raw request and response payloads.`,normalizedSummaryUnavailableTitle:`Normalized summary unavailable`,otherLabel:`Other`,outputTokensLabel:`Output tokens`,providerLabel:`Provider`,requestMessagesLabel:`Request messages`,statusLabel:`Status`,stopReasonLabel:`Stop reason`,toolCallsLabel:`Tool calls`,toolsAvailableLabel:`Tools available`,totalCostSoFarLabel:`Total cost so far`,totalToFirstTokenLabel:`Total to first token`,usageSubtitle:`Token and call counts normalized by the assistant route.`,usageTitle:`Usage`},pinnedAppColorSwatches:{colors:{green:`Green`,orange:`Orange`,pink:`Pink`,purple:`Purple`,teal:`Teal`,yellow:`Yellow`},noColor:`No color`},promptTab:{availableTools:`Available tools`,bannerNoSections:`This call has no normalized prompt sections yet.`,bannerSectionsCount:`{count, plural, one {# normalized request section shown in the order returned by the assistant route.} other {# normalized request sections shown in the order returned by the assistant route.}}`,collapseAll:`Collapse all`,copyAriaLabel:`Copy {title}`,emptyBody:`This call has no normalized prompt sections. Use the Raw tab to inspect the full request payload.`,emptyTitle:`No normalized prompt sections`,expandAll:`Expand all`,formatJavaScript:`JavaScript`,formatJson:`JSON`,formatMarkdown:`Markdown`,formatTypeScript:`TypeScript`,noContentAvailable:`No content available.`,promptSectionsTitle:`Prompt sections`},rawTab:{copyRequestPayloadAriaLabel:`Copy request payload`,copyResponsePayloadAriaLabel:`Copy response payload`,downloadFailedToast:`Failed to download the payload.`,downloadRequestPayloadAriaLabel:`Download request payload`,downloadResponsePayloadAriaLabel:`Download response payload`,loadErrorTitle:`Couldn't load raw payloads`,loading:`Loading raw payloads…`,payloadRequestFailed:`The payload request failed. Try again.`,request:`Request`,requestPayload:`Request payload`,response:`Response`,responsePayload:`Response payload`,retry:`Retry`},redactedCredentialChip:{revealFailed:`Couldn't reveal {name}.`},responseTab:{argumentsPreview:`Arguments preview`,copySectionAria:`Copy section content`,kindAssistantText:`Assistant text`,kindFunctionResponse:`Function response`,kindReasoning:`Reasoning`,kindToolCall:`Tool call`,kindToolResult:`Tool result`,modeResultOnly:`Result-only response`,modeTextOnly:`Text-only response`,modeToolCalling:`Tool-calling response`,noArgumentsPreview:`No structured arguments preview is available for this tool call.`,noAssistantText:`No assistant text was captured for this section.`,noSectionsFallback:`This response has no rendered sections. Raw payloads remain available in the Raw tab, and any normalized response metadata will still be shown when present.`,rawTabHint:`Need the full provider payload? Open the Raw tab for request and response JSON.`,responseMetadata:`Response metadata`,sectionTitle:`Section {number}`,sectionUnavailable:`Section rendering unavailable`,stopReasonChip:`Stop reason: {reason}`,toolChip:`Tool: {name}`},sidebarConversationError:{message:`Your conversations failed to load.`,retry:`Try again`},skillDetailPanel:{actionsAria:`Skill actions`,moreTooltip:`More`},skillsTab:{callLink:`Call {number}`,emptyBody:`This tab lists every <code>skill_load</code> tool call across the conversation. None were detected in the captured LLM calls.`,emptyTitle:`No skills were loaded in this conversation`,loadCount:`{count, plural, one {1 load} other {# loads}}`,summaryStats:`{uniqueCount, plural, one {# unique skill} other {# unique skills}} · {totalLoads, plural, one {# load call} other {# load calls}}`,summaryTitle:`Skills loaded in this conversation`},toolDefinitionsContent:{defaultValue:`default: {value}`,inputSchema:`Input schema`,intro:`{count, plural, one {# tool} other {# tools}} sent with this request. Expand a tool to see its definition and input schema.`,noInputSchema:`No input schema - this tool takes no structured input.`,required:`required`,settings:`Settings`},transcriptMessageBody:{fileUnavailable:`File not available for download`,fileUnavailableHostTimeout:`File not available for download (host file approval may have timed out)`},useConversationLoader:{authFailed:`Failed to authenticate user.`},useConversationSecondaryActions:{assistantBusy:`Your assistant is busy. Try again when it finishes replying.`,retryFailed:`Couldn't retry the response`,summarizeFailed:`Couldn't summarize the conversation`},useSendMessage:{commandFailed:`Couldn't run that command. Please try again.`,doctorUnavailable:`The Doctor isn't available on this assistant.`}},_n={notFound:{badge:`Error 404`,title:`Page not found`,body:`The page you're looking for doesn't exist or may have moved.`,backToAssistant:`Back to your assistant`,goBack:`Go back`}},vn={schedulesPanel:{pastToggle:`Past ({count, number})`,loadFailed:`Failed to load schedules.`,retry:`Retry`,emptyTitle:`No schedules yet`,emptyDescription:`Ask your assistant to set one up, or create one yourself.`,newConversation:`New Conversation`,emptyActionsSeparator:`or`,createSchedule:`Create schedule`,useProfileForAll:`Use {profile} for all schedules`,oneTimeHeading:`One-time`},scheduleSummaryCard:{costLoading:`Loading cost`,costCaption:`spent in the last {days, plural, one {# day} other {# days}}`,minimize:`Minimize {title}`,expand:`Expand`},scheduleDetail:{close:`Close`,closeAria:`Close schedule details`,details:`Details`,status:`Status`,toggleAria:`Toggle {name}`,nextRun:`Next run`,lastRun:`Last run`,cadence:`Cadence`,mode:`Mode`,modelProfile:`Model profile`,modelProfileWorkflowNote:`Each step of a workflow picks its own model, so this schedule has no model setting to change.`,chooseModel:`Choose a model`,modelChangeFailed:`Failed to change the model.`,costLabel:`{days, number} Day Cost`,runsLabel:`{days, number} Day Runs`,conversations:`Conversations`,conversation:`Conversation`,conversationArchived:`(archived)`,conversationUnavailable:`(unavailable)`,output:`Output`,error:`Error`,openRunConversationAria:`Open conversation for run at {time}`,toggleRunDetailsAria:`Toggle details for run at {time}`,noRunsYet:`No runs yet.`,recentRuns:`Recent runs`,managedByPlugin:`Managed by plugin {plugin}`,managedByPluginPaused:`Managed by plugin {plugin} · off, {reason}`,delete:`Delete`,deleteConfirmMessage:`Delete "{name}"? This can't be undone.`,cancel:`Cancel`,confirmDelete:`Yes, delete`,viewUsage:`View usage`,turnOnToRun:`Turn this schedule on to run it`,running:`Running…`,runNow:`Run now`,runFailed:`Failed to run schedule.`,deleteFailed:`Failed to delete schedule.`,toggleFailed:`Failed to toggle schedule.`,notUsedForWorkflow:`Not used for workflow runs`,enabled:`Enabled`,disabled:`Disabled`},systemTaskDetail:{openMemorySettings:`Open Memory settings`,turnOnMemory:`Turn on Memory`,memorySettings:`Memory settings`,fallbackModelProfile:`Default (system task model)`,repeats:`Repeats`,nameHeartbeat:`Heartbeat`,nameConsolidation:`Consolidation`,nameRetrospective:`Memory retrospective`,statusManagedOn:`On · Managed by Memory`,statusPaused:`Paused`,pausedRetrospectiveSwitchedOff:`Retrospectives are turned off. Turn them back on under Memory in settings.`,pausedRetrospective:`Memory is off, so retrospectives are paused. Turn Memory back on to resume them.`,pausedConsolidation:`Memory is off, so consolidation is paused. Turn Memory back on to resume consolidation.`},scheduleRow:{toggleAria:`Toggle {name}`},scheduleDisarmReason:{userDisabled:`turned off by you`,pluginRemoved:`plugin removed`,pluginDisabled:`plugin disabled`,declarationRemoved:`removed from plugin`,declarationDisabled:`paused by plugin`}},yn={advisorProfileRow:{chooseProfilePlaceholder:`Choose profile…`,description:`The profile your assistant consults for a second opinion when it wants to check a plan or review its own work.`,title:`Advisor`},aiProviderPicker:{defaultEntryMeta:`Default`},billingStatusHandler:{successToast:`Payment received! Your credit balance will update shortly.`,topUpCancelToast:`Checkout was cancelled. No credits were added.`,upgradeCancelToast:`Upgrade canceled. No changes to your plan.`},bulkOverrideSwapModal:{affectedSummary:`{count, plural, one {# action currently uses {profile}} other {# actions currently use {profile}}}`,applyTo:`{count, plural, one {Apply to # action} other {Apply to # actions}}`,cancel:`Cancel`,changeToLabel:`Change to`,chooseActions:`Choose which actions to update.`,clearAll:`Clear all`,currentlyUsingLabel:`Currently using`,intro:`Update the actions that currently use one profile. The result is saved as individual overrides.`,noticeBody:`It changes the selected actions that use {sourceLabel} today. It does not create an ongoing rule between profiles.`,noticeTitle:`This happens once.`,selectAll:`Select all`,successToast:`Updated {count, plural, one {# action} other {# actions}} to "{targetLabel}".`,targetPlaceholder:`Select a profile…`,title:`Change Action Overrides`,updateFailedToast:`Failed to update overrides. Please try again.`,viaDefault:`Default`,viaOverride:`Override`,willChange:`{count, plural, one {# action will change} other {# actions will change}}`},callSiteOverridesRow:{defaultProfileSuffix:`· Default: {label}`,modelLabel:`Model`,overrideAriaLabel:`Override {displayName}`,pickModelError:`Pick a model`,providerLabel:`Provider`,unavailableOption:`{name} (unavailable)`},chatgptOauthSection:{completeFailed:`Failed to complete sign-in. Please try again.`,completeSignIn:`Complete Sign In`,completingSignIn:`Completing sign-in...`,connected:`ChatGPT subscription connected successfully.`,intro:`Connect your ChatGPT subscription to use OpenAI models without an API key.`,invalidUrl:`Invalid URL. Please paste the full URL from the address bar.`,missingCode:`The URL is missing the authorization code. Make sure you copied the full URL.`,missingState:`The URL is missing the state parameter. Make sure you copied the full URL.`,pasteUrlError:`Please paste the URL from the error page.`,signInButton:`Sign in with ChatGPT`,startFailed:`Failed to start ChatGPT sign-in. Please try again.`,startingSignIn:`Starting sign-in...`,step1Idle:`1. Click "Sign in with ChatGPT" below to open a popup`,step1PasteUrl:`1. Click "Sign in with ChatGPT" to open a popup`,step2:`2. Sign in, then you'll land on an error page - that's expected`,step3:`3. Copy the full URL from that page's address bar and paste it below`,tryAgain:`Try Again`,urlPlaceholder:`Paste callback URL here...`},checkoutBonusModal:{body:`Claim a one-time {amount} credit and we'll add it straight to your account balance. No payment required.`,claim:`Claim {amount} in credits`,decline:`No thanks`,errorToast:`Could not add the credits. Please try again.`,grantedToast:`{amount} in credits added to your account.`,title:`Here's {amount} on us`,unavailableToast:`This offer is no longer available.`},emailManagedContent:{addressLabel:`Address`,checkingSubscription:`Checking subscription…`,confirm:`Confirm`,create:`Create`,createEmailFailedFallback:`Failed to create email address.`,creating:`Creating…`,domainLabel:`Domain`,domainRegisteredToast:`Domain {domain} registered.`,domainReleaseFailedToast:`Failed to release domain.`,domainReleasedToast:`Domain released.`,emailAddressLabel:`Email address`,emailCreatedToast:`Email address created.`,emailRemoveFailedToast:`Failed to remove email address.`,emailRemovedToast:`Email address removed.`,emailUsernameAriaLabel:`Email username`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`Enter a subdomain.`,enterUsernameError:`Enter an email username.`,register:`Register`,registerDomainFailedFallback:`Failed to register domain.`,registering:`Registering…`,releaseConfirm:`Release`,releaseDomainAriaLabel:`Release domain`,releaseDomainConfirmMessage:`Are you sure you want to release <code>{domain}</code>? The subdomain will become available for others to claim.`,releaseDomainTitle:`Release Domain`,removeAddressFirstToast:`Remove the email address first.`,removeConfirm:`Remove`,removeEmailAriaLabel:`Remove email address`,removeEmailConfirmMessage:`Are you sure you want to remove <code>{address}</code>? Your assistant will no longer be able to send or receive email at this address.`,removeEmailTitle:`Remove Email Address`,retry:`Retry`,setSubdomainConfirmMessage:`<code>{subdomain}</code> will also become your assistant's public handle. You won't be able to change it once set.`,setSubdomainTitle:`Set Subdomain`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`subdomain`,subdomainHint:`Each assistant gets its own subdomain. Lowercase letters, numbers, and hyphens only.`,subdomainLabel:`Subdomain`,subscriptionWarningBody:`We couldn't reach the billing service. The form below assumes managed email is enabled for your org. If it isn't, registering a domain will fail.`,subscriptionWarningTitle:`Couldn't verify subscription status`,upgradeButton:`Upgrade`,upgradeNoticeBody:`Upgrade to a plan that includes an email address for your assistant. No provider setup required.`,upgradeNoticeTitle:`Give your assistant its own email address`,usageSummary:`{sent} / {limit} sent today · {received} received`},emailServiceCard:{apiKeyConfigured:`{providerName} API key configured. To reconfigure, run the <code>{setupSkill}</code> skill.`,connecting:`Connecting to the Vellum platform…`,openProvider:`Open {providerName}`,platformLoginNotice:`Log in to the Vellum platform to manage email settings.`,providerLabel:`Provider`,saveSuccessToast:`Email settings saved.`,setupInstructions:`Configure {providerName} via the assistant CLI: ask the assistant to run the <code>{setupSkill}</code> skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`,subtitle:`Configure how your assistant sends and receives email`,title:`Email`},imageGenerationCard:{activeModelLabel:`Active Model`,apiKeyLabel:`API Key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,geminiApiKeyPlaceholder:`Enter your Gemini API key`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,modelAriaLabel:`Image generation model`,modelUpdateFailedToast:`Failed to update image generation model. Please try again.`,openaiApiKeyPlaceholder:`Enter your OpenAI API key`,providerAriaLabel:`Image generation provider`,providerLabel:`Provider`,savedToast:`Image generation settings saved.`,subtitle:`Configure which model your assistant uses to generate images`,title:`Image Generation`,vellumNote:`Image generation runs through your Vellum account.`},integrationsPage:{filterAriaLabel:`Filter integrations`,filterAll:`All`,filterEnabled:`Enabled`,filterNotEnabled:`Not Enabled`},languageModelCard:{defaultProviderUnavailable:`Your default provider is not available.`,manage:`Manage`,overridesTitle:`Overrides`,subtitle:`Profiles choose which model answers. Providers supply access to it`,title:`Language Model`},manageProfilesBlockedDeleteModal:{actionOverridesTitle:`Action overrides`,cancel:`Cancel`,clauseActionOverrides:`is used by {count, plural, one {# action override} other {# action overrides}}`,clauseDefaultProfile:`is your default profile`,clauseRunsBoth:`runs {schedules, plural, one {# schedule} other {# schedules}} and {reminders, plural, one {# reminder} other {# reminders}}`,clauseRunsReminders:`runs {count, plural, one {# reminder} other {# reminders}}`,clauseRunsSchedules:`runs {count, plural, one {# schedule} other {# schedules}}`,disabledTargetTooltip:`Enable this profile to move schedules onto it.`,moreSchedules:`and {count} more`,reassignAndDelete:`Reassign and Delete`,replacementLabel:`Replacement profile`,replacementPlaceholder:`Select a replacement…`,saving:`Saving…`,scheduleLookupFailed:`We could not check which schedules use this profile. Any schedule pinned to it moves to the replacement as well.`,schedulesTitle:`Schedules`,summaryNoReferences:`Choose a replacement profile for "{display}". Anything still pointing at it moves there before it is deleted.`,summaryOneClause:`"{display}" {clause1}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,summaryThreeClauses:`"{display}" {clause1}, {clause2}, and {clause3}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,summaryTwoClauses:`"{display}" {clause1} and {clause2}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,title:`Choose a Replacement Profile`},overridesCallSiteList:{emptySearch:`No actions match your search.`},overridesDetailPanel:{advisorSection:`Advisor`,bulkChange:`Bulk change`,bulkChangeNoCandidatesTitle:`No actions currently use a profile`,bulkChangeUnsavedTitle:`Save or reset your changes first`,customProfileOption:`Custom`,description:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`,loadErrorHint:`Make sure your assistant is running`,loadErrorTitle:`Couldn't load actions`,otherDomain:`Other`,overridesResetToast:`Overrides reset.`,overridesSavedToast:`Overrides saved.`,resetConfirmMessage:`Every action override will be reset and will follow its default. This cannot be undone.`,resetFailedToast:`Failed to reset overrides. Please try again.`,resetToDefaults:`Reset to Defaults`,retry:`Retry`,save:`Save`,saveFailedToast:`Failed to save overrides. Please try again.`,searchPlaceholder:`Search actions…`,title:`Action Overrides`},pendingPairingRequests:{approveButton:`Approve`,denyButton:`Deny`,instruction:`A device is asking to use this assistant. Approve a request only after confirming its code matches the one shown on the requesting device.`,requestedMeta:`Requested {when} from {ip}`,requestedMetaHost:`Requested {when} from this computer`,title:`Pairing requests`},profileAdvancedParams:{contextWindowLabel:`Context Window`,defaultValueLabel:`Default · {value}`,effortLabel:`Effort`,effortSegmentDefault:`default`,enableExtendedThinkingLabel:`Enable extended thinking`,maxOutputTokensLabel:`Max Output Tokens`,reset:`Reset`,snapshotsHint:`Fields left at their default are saved with the values shown and won't change if the assistant defaults change later.`,speedLabel:`Speed`,streamThinkingTokensLabel:`Stream thinking tokens`,temperatureLabel:`Temperature`,thinkingLevelInheritHint:`(default = inherit)`,thinkingLevelLabel:`Thinking level`,tokensAriaLabel:`{label} (tokens)`,topPLabel:`Top P`,verbosityLabel:`Verbosity`},profileDetailPanel:{createProfile:`Create Profile`,defaultTitle:`Profile`,delete:`Delete`,deleting:`Deleting…`,managedTag:`Managed by Vellum`,newProfileTitle:`New Profile`,save:`Save`,saveAsNew:`Save As New`,saveChanges:`Save Changes`,saving:`Saving…`},profileEditor:{subscriptionSteeringHint:`Your ChatGPT subscription is available as the ChatGPT provider.`},profileEditorFields:{activeLabel:`Active`,addApiKey:`Add API key`,advanced:`Advanced`,createNewProvider:`+ Create new provider`,descriptionLabel:`Description <optional>(optional)</optional>`,descriptionPlaceholder:`Describe when to use this profile`,displayNameLabel:`Display Name`,displayNamePlaceholder:`e.g. Fast & Cheap`,keyLabel:`Key`,keyPlaceholder:`e.g. fast-cheap`,nameLabel:`Name`,newProviderNote:`New provider connection will show up in the Providers section.`,providerLabel:`Provider`,selectProviderPlaceholder:`Select a provider…`,setUp:`Set up`},profileEditorModal:{cancel:`Cancel`,close:`Close`,editProfileTitle:`Edit Profile`,newProfileTitle:`New Profile`,platformTag:`Platform`,profileFallbackTitle:`Profile`,save:`Save`,saveAsNew:`Save As New`,saving:`Saving…`},profileEditorProviderSection:{chooseFromList:`Choose from list`,connectionNotFound:`This profile referenced a credential that no longer exists. Saving resets it to use the provider's available key.`,customModelAriaLabel:`Custom model ID`,customModelPlaceholder:`provider/model-id`,enterCustomModelIdHint:`Enter the exact model identifier your provider expects. It's sent to the connection as-is.`,enterCustomModelIdOption:`Enter a custom model ID…`,modelAriaLabel:`Model`,modelEmptyConfigureConnectionHint:`No models available. Configure models on the provider connection first.`,modelEmptyConfigureConnectionPlaceholder:`Configure models on connection`,modelEmptyNoProviderPlaceholder:`Select a provider first`,modelEmptyUnknownHint:`No models are available for this provider in this app version. Update the app, or enter a custom model ID.`,modelEmptyUnknownPlaceholder:`No models available`,modelLabel:`Model`,noProviderConnectionsHint:`No provider connections. Open Providers to add one.`,providerLabel:`Provider`,providerNotFoundSuffix:`(not found)`,selectModelError:`Select a model.`,selectModelPlaceholder:`Select a model`,selectProviderPlaceholder:`Select a provider…`},profileRow:{actionsAriaLabel:`Actions for {displayName}`,defaultTag:`Default`,delete:`Delete`,disable:`Disable`,disabledTag:`Disabled`,edit:`Edit`,enable:`Enable`,makeDefault:`Make Default`,managedByVellum:`Managed by Vellum`,openProfileAriaLabel:`Open profile {displayName}`,providerUnavailableDefault:`This profile's provider is not available.`,providerUnavailableFixable:`{message} Click to fix.`,view:`View`},profilesSection:{createProfile:`Create Profile`,emptyState:`No profiles yet. Create one to get started.`,loading:`Loading profiles…`,title:`Profiles`},providerCreateForm:{add:`Add`,addNamed:`Add {name}`,addProviderDescription:`Choose a provider and paste its API key.`,addProviderTitle:`Add Provider`,advanced:`Advanced`,apiKeyPlaceholder:`Enter your API key`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.x.ai/v1`,cancel:`Cancel`,customProviderHint:`Custom providers connect to any endpoint that serves the OpenAI-compatible API - xAI, Groq, LM Studio, vLLM, and similar.`,customProviderOption:`Custom provider`,displayNameLabel:`Display Name <optional>(optional)</optional>`,displayNamePlaceholder:`e.g. My Anthropic Key`,emptyServerResponse:`Server returned an empty response. Please try again.`,enterApiKeyOrCredential:`Enter an API key or select an existing credential.`,failedSaveApiKey:`Failed to save API key. Please try again.`,failedSaveProvider:`Failed to save provider. Please try again.`,localEndpointHint:`Leave the key empty for local endpoints - they connect keyless.`,modelsHint:`Comma-separated model identifiers exposed by your endpoint.`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,nameLabel:`Name`,namePlaceholder:`xAI`,providerAriaLabel:`Provider`,providerConnectedToast:`Provider connected`,providerLabel:`Provider`,saving:`Saving…`,useChatgptSignIn:`Use the "Sign in with ChatGPT" button to connect your subscription.`},providerDetailPanel:{addProviderTitle:`Add Provider`},providerEditorApiKeySection:{advanced:`Advanced`,apiKeyLabel:`API Key`,cancel:`Cancel`,credentialReferenceAriaLabel:`Credential reference`,credentialReferenceLabel:`Credential Reference`,credentialReferenceSuffix:`· Credential reference`,loading:`Loading…`,newCredential:`+ New Credential`,newCredentialNameLabel:`New Credential Name`,newCredentialPlaceholder:`e.g. team-key`,use:`Use`},providerEditorContent:{apiKeyPlaceholder:`Enter your API key`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.example.com/v1`,cancel:`Cancel`,displayNameLabel:`Display Name <optional>(optional)</optional>`,displayNamePlaceholder:`e.g. My Anthropic Key`,editProviderSettingsFallback:`Edit provider settings.`,editProviderTitle:`Edit Provider`,editingConnection:`Editing {name}.`,emptyServerResponse:`Server returned an empty response. Please try again.`,failedSaveApiKey:`Failed to save API key. Please try again.`,failedSaveProvider:`Failed to save provider. Please try again.`,modelsHint:`Comma-separated model identifiers exposed by your endpoint.`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,nothingToEdit:`Nothing to edit. Close and try again.`,saveChanges:`Save Changes`,saving:`Saving…`},providerRow:{actionsAriaLabel:`Actions for {displayName}`,customTag:`Custom`,customTagTitle:`A provider you created, served by an OpenAI-compatible endpoint.`,defaultTag:`Default`,defaultTagTitle:`Built-in profiles (Balanced, Quality, Cost, Speed) use this provider.`,delete:`Delete`,edit:`Edit`,localTag:`Local`,localTagTitle:`Runs models on this machine.`,managedTag:`Managed`,managedTagTitle:`Runs on Vellum's managed credentials.`,openProviderAriaLabel:`Open provider {displayName}`,setAsDefault:`Set as default`},providersSection:{addProvider:`Add Provider`,empty:`No providers yet. Add one to get started.`,loadError:`Failed to load providers. Please try again.`,title:`Providers`},sharedUi:{checkingDomain:`Checking domain…`,domainVerified:`Domain verified`,failedTitle:`Domain verification failed. DNS records may not have propagated correctly. You could try releasing and re-registering the domain.`,managedLabel:`Managed`,managedServicesBanner:`Managed services are metered and deducted from your Vellum account balance. <link>View pricing</link>`,modeToggleAriaLabel:`Service mode`,unknownStatus:`Unknown status`,unknownStatusTitle:`Unable to retrieve domain verification status.`,verificationFailed:`Verification failed`,verifiedTitle:`DNS records have been verified. Your domain is ready to send and receive email.`,verifyingDomain:`Verifying domain…`,verifyingTitle:`DNS records have been provisioned. Waiting for the email provider to verify them - this usually takes a few minutes.`,yourOwnLabel:`Your Own`},speechToTextCard:{subtitle:`Configure how your assistant transcribes speech`,title:`Speech-to-Text`},textToSpeechCard:{subtitle:`Configure how your assistant speaks`,title:`Text-to-Speech`},useDaemonConfig:{assistantNotReadyToast:`Assistant not ready. Please try again.`,saveApiKeyFailedToast:`Failed to save {providerName} API key. Please try again.`},usePendingPairingRequests:{actionErrorFallback:`Something went wrong. Try again.`,denyAlreadyApproved:`This request was already approved somewhere else, so the deny didn't take effect and the device is now paired.`,pollErrorFallback:`Something went wrong while checking for pairing requests.`},useProfileSave:{createdToast:`Profile "{name}" created`},useProviderActions:{deleteFailedToast:`Failed to delete the provider. Please try again.`,deleteInUseToast:`This provider is in use by a profile or as the default provider. Update those settings before deleting it.`,setDefaultFailedToast:`Failed to set the default provider. Please try again.`},webFetchCard:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter your API key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,providerLabel:`Provider`,savedToast:`Web fetch settings saved.`,subtitle:`Configure how your assistant reads individual web pages`,title:`Web Fetch`},webSearchCard:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter your API key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,providerAriaLabel:`Web search provider`,providerLabel:`Provider`,savedToast:`Web search settings saved.`,subtitle:`Configure how your assistant should search the web`,title:`Web Search`,vellumNote:`Search runs through your Vellum account.`}},Z=[`common`,`chat`,`schedules`,`account`,`channels`,`settings`,`workspace`,`terminal`,`remote-web`,`credential-requests`,`logs`,`library`,`home`,`contacts`,`onboarding`,`intelligence`],bn=`common`,xn=[`en`,`es`];function Q(e){return typeof e==`string`&&xn.includes(e)}function Sn(e){for(let t of e){let e=t.trim().toLowerCase();if(e===``)continue;if(Q(e))return e;let n=e.split(`-`)[0];if(Q(n))return n}return`en`}var $={common:_n,chat:gn,schedules:vn,account:rn,channels:an,settings:yn,workspace:hn,terminal:mn,"remote-web":pn,"credential-requests":sn,logs:un,library:ln,home:cn,contacts:on,onboarding:fn,intelligence:dn},Cn={es:{common:()=>r(()=>import(`./common-EmSgsWNa.js`),[]),chat:()=>r(()=>import(`./chat-1xy90pMn.js`),[]),schedules:()=>r(()=>import(`./schedules-Co4-ymK5.js`),[]),account:()=>r(()=>import(`./account-DEWe1CJv.js`),[]),channels:()=>r(()=>import(`./channels-CXuBInAc.js`),[]),settings:()=>r(()=>import(`./settings-CEQzAg2m.js`),[]),workspace:()=>r(()=>import(`./workspace-BFa6JWKe.js`),[]),terminal:()=>r(()=>import(`./terminal-_tzbWcM4.js`),[]),"remote-web":()=>r(()=>import(`./remote-web-DBCYTF2P.js`),[]),"credential-requests":()=>r(()=>import(`./credential-requests-BbBZKJHx.js`),[]),logs:()=>r(()=>import(`./logs-Blq4k473.js`),[]),library:()=>r(()=>import(`./library-CuKVNDEp.js`),[]),home:()=>r(()=>import(`./home-BwSxL4rM.js`),[]),contacts:()=>r(()=>import(`./contacts-BRU7ohw2.js`),[]),onboarding:()=>r(()=>import(`./onboarding-DK0I_g8T.js`),[]),intelligence:()=>r(()=>import(`./intelligence-DXpXyKbw.js`),[])}};async function wn(e){if(e===`en`)return $;let t=Cn[e],n=await Promise.all(Z.map(async e=>[e,(await t[e]()).default]));return Object.fromEntries(n)}function Tn(e,t){return{lng:e,fallbackLng:`en`,ns:[...Z],defaultNS:bn,resources:t,interpolation:{escapeValue:!1},returnNull:!1}}function En(){if(typeof navigator>`u`)return[];let e=navigator.languages;return Array.isArray(e)&&e.length>0?[...e]:navigator.language?[navigator.language]:[]}function Dn(){let e=t(`locale`,``);return Q(e)?e:Sn(En())}function On(e){if(typeof document>`u`)return;document.documentElement.lang=e;let t;try{let n=new Intl.Locale(e);t=n.getTextInfo?.().direction??n.textInfo?.direction}catch{t=void 0}document.documentElement.dir=t===`rtl`?`rtl`:`ltr`}async function kn(e){let t=Z.filter(t=>!F.hasResourceBundle(e,t));if(t.length===0)return;let n=await wn(e);for(let r of t)F.addResourceBundle(e,r,n[r],!0,!0)}function An(e,t){n(e,{context:`i18n_catalog_load`,level:`warning`,tags:{locale:t}})}async function jn(){let e=Dn();if(F.isInitialized)try{return await Mn(e),e}catch(t){return An(t,e),Nn()}let t={en:$},n=`en`;if(e!==`en`)try{t[e]=await wn(e),n=e}catch(t){An(t,e)}return await F.use(new nn).use(Oe).init(Tn(n,t)),On(n),n}async function Mn(t){await kn(t),await F.changeLanguage(t),e(`locale`,t),On(t)}function Nn(){let e=F.resolvedLanguage??F.language;return Q(e)?e:`en`}export{Se as a,we as i,jn as n,k as o,De as r,ve as s,Nn as t};
|
|
10
|
+
Leave blank to use the bundled template. "Load default" seeds the textarea with the bundled body for editing.`,description:`Dry-run the v4 router with custom tier/batch overrides. Read-only - no rows are written to <code>memory_v2_injection_events</code> or <code>memory_v2_activation_logs</code>, and no activation state is mutated. Leave an override blank to inherit the live config value; enter <code>null</code> to explicitly disable a tier.`,diffLabel:`Diff`,diffValue:`{shared} shared · {unique} unique to this pane`,effectiveConfig:`Effective config`,emaScore:`EMA {score}`,empty:`(empty)`,emptySelectionHint:`The router returned an empty selection. Try a more specific query, or relax the override values.`,failedToRunSimulation:`Failed to run simulation`,firstTurnAssistantPlaceholder:`Leave blank for a first-turn scenario.`,inheritActive:`inherit active`,inheritActiveWithProfile:`inherit active ({profile})`,inheritPlaceholder:`inherit`,invalidOverrideInput:`Invalid override input`,justArrivedUserLabel:`Just-arrived [user]: message`,lastUserPlaceholder:`e.g. what should we ship next`,legendAOnly:`A only`,legendBOnly:`B only`,legendInBoth:`in both`,llmProfilesOverride:`llm.profiles override`,loadDefault:`Load default`,loading:`Loading…`,noPagesSelected:`No pages selected`,notAvailable:`Memory router playground is not available.`,nowBlockLabel:`'<now>' block`,nowDefaultPlaceholder:`Pre-filled with the live NOW.md. Edit to test alternate states.`,nowLoadingPlaceholder:`Loading current NOW.md…`,nullValue:`null`,overrideMustBePositiveInteger:`{fieldName} must be a positive integer or 'null' (got "{value}")`,overrideSuffix:` (override)`,pageCount:`{count, plural, one {# page} other {# pages}}`,pairLabel:`Pair {index} of {total}`,pairMostRecentSuffix:` · most recent`,paneTitle:`Pane {paneId}`,promptModeBundled:`bundled`,promptModeCustom:`custom`,rawApiExchange:`Raw API exchange`,recentPairsLabel:`Recent (assistant, user) pairs · oldest first`,reloadNowButton:`Reload live NOW.md`,removeButton:`Remove`,requestLabel:`Request (Pane {paneId})`,reset:`Reset`,responseLabel:`Response (Pane {paneId})`,routerFailure:`Router failure: {reason}`,runBoth:`Run both`,runPane:`Run {paneId}`,running:`Running…`,selectedLabel:`Selected`,selectedValue:`{count} (live max_page_ids: {maxPageIds})`,summary:`Summary`,summaryUserMessageLabel:`User message`,systemPrompt:`System prompt`,systemPromptConfigLabel:`system prompt`,tier1Label:`tier 1`,tier2Label:`tier 2`,tier3Label:`tier 3 · b{batch}`,title:`Memory Router Playground`,totalCandidatePagesLabel:`Total candidate pages`,userMessageLabel:`[user]: message`,userMessagePlaceholder:`User's message.`},memoryTab:{afterMergeLabel:`After merge`,breakdownCAssistantRerank:`c_assistant · rerank Δ_a`,breakdownCAssistantSim:`c_assistant · sim_a`,breakdownCNowSim:`c_now · sim_n`,breakdownCUserRerank:`c_user · rerank Δ_u`,breakdownCUserSim:`c_user · sim_u`,breakdownOwnActivation:`A_o (own)`,breakdownPriorActivation:`prior · d`,breakdownRerankScaledRaw:`+{scaled} (raw {raw})`,breakdownScaledRaw:`{scaled} (raw {raw})`,breakdownSource:`source`,breakdownSpreadDelta:`spread Δ`,breakdownStatus:`status`,candidateScores:`sem {semantic} · rec {recency}`,carriedPill:`Carried: {count}`,conceptActivationsSubtitle:"Sorted by final activation. Skill entries appear with the `skills/` slug prefix; expand a row for the activation breakdown.",conceptActivationsTitle:`Concept activations ({count})`,configCAssistant:`c_assistant`,configCNow:`c_now`,configCUser:`c_user`,configDDecay:`d (decay)`,configEpsilon:`epsilon`,configHops:`hops`,configKSharpening:`k (sharpening)`,configSubtitle:`Activation weights and selection thresholds.`,configTitle:`Config`,configTopK:`top_k`,copyAriaLabel:`Copy to clipboard`,copyAriaLabelCopied:`Copied`,copyButtonCopied:`Copied`,copyButtonCopy:`Copy`,copyErrorMessage:`Couldn't copy to clipboard.`,copyTitle:`Copy`,copyTitleCopied:`Copied!`,corePill:`Core: {count}`,degradationTitle:`Degradation`,fallbackSourcesLabel:`Fallback sources`,hybridSearchLabel:`Hybrid search`,inContextPill:`In context: {count}`,injectedMemoryContextTitle:`Injected memory context`,injectedPill:`Injected: {count}`,injectedTokensLabel:`Injected tokens`,latencyMs:`{ms} ms`,loading:`Loading…`,loggedMemorySelectionSubtitle:`Rendered from the v3 selection, not injected this turn.`,loggedMemorySelectionTitle:`Logged memory selection`,memoryDisabledDefaultReason:`Memory recall was disabled for this turn.`,memoryDisabledTitle:`Memory disabled`,missingValue:`-`,modelLabel:`Model`,no:`No`,noDataBody:`Memory recall information is not available for this message.`,noDataTitle:`No memory data`,noEntriesRanked:`No entries ranked.`,noPagesSelected:`No pages selected.`,notInjectedPill:`Not injected: {count}`,pageContentLabel:`page content`,pageNotFound:`Page not found on disk. Slug may reference a stale Qdrant entry.`,pillMemoryV2:`Memory V2`,pillMemoryV3:`Memory V3`,pillRecallV1:`Recall (v1)`,pinnedChip:`pinned`,pinnedPill:`Pinned: {count}`,providerLabel:`Provider`,queryContextSubtitle:`The text embedded as the search vector for semantic retrieval.`,queryContextTitle:`Query context`,reasonLabel:`Reason`,retrievalFunnelSubtitle:`How memories were filtered from semantic search to injection.`,retrievalFunnelTitle:`Retrieval funnel`,searchDetailsTitle:`Search details`,selectedLabel:`Selected`,selectedPagesSubtitle:`Pages v3 selected, tagged by the lane that surfaced them and the matched section (when a finder lane surfaced one).`,selectedPagesTitle:`Selected pages ({count})`,selectedPill:`Selected: {count}`,semanticHitsLabel:`Semantic hits`,semanticUnavailableLabel:`Semantic unavailable`,sparseDenseOnly:`Dense only`,sparseUsed:`Used`,sparseVectorsLabel:`Sparse vectors`,statusActive:`Active`,statusDegraded:`Degraded`,statusLabel:`Status`,statusSubtitle:`Provider, model, and latency for this recall.`,statusTitle:`Status`,tier1Label:`Tier 1`,tier2Label:`Tier 2`,topCandidatesSubtitle:`{count, plural, one {# candidate ranked by final score.} other {# candidates ranked by final score.}}`,topCandidatesTitle:`Top candidates`,totalLatencyLabel:`Total latency`,turnLevelRecallBody:`Memory recall runs once per turn. This data applies to all LLM calls for this message.`,turnLevelRecallTitle:`Turn-level recall`,turnPill:`Turn {turn}`,unavailable:`Unavailable`,unknown:`Unknown`,v2StatusInContext:`In context`,v2StatusInjected:`Injected`,v2StatusNotInjected:`Not injected`,v2StatusPageMissing:`Page missing`,v2TurnBody:`Spreading-activation memory pass that ranks concepts and skills for this turn.`,v2TurnTitle:`Memory - turn {turn} ({mode})`,v3LiveInjectionBody:`v3 is the live memory source this turn: the block below was injected into context (v2 suppressed).`,v3LiveInjectionTitle:`Memory V3 - live injection`,v3LoggedSelectionBody:`v3 is not the live memory source for this assistant: these selections were logged but not injected this turn; the turn's memory came from v2.`,v3LoggedSelectionTitle:`Memory V3 - logged selection (not injected)`,v3SourceCarried:`carried`,v3SourceCore:`core`,v3SourceL1L2:`L1+L2`,v3SourceNeedle:`needle`,yes:`Yes`},mobileCallSelector:{callOfTotal:`Call {number} of {total}`,llmCallCount:`{count, plural, one {1 LLM call} other {# LLM calls}}`,selectCallAria:`Select an LLM call to inspect`,sheetTitle:`Select a call`},overviewTab:{cacheTokensLabel:`Cache tokens`,conversationSubtitle:`Running totals across every priced LLM call so far.`,conversationTitle:`Conversation`,createdLabel:`Created`,durationLabel:`Duration`,estimatedCostLabel:`Estimated cost`,failedStatus:`Failed`,firstTokenKindLabel:`First token kind`,firstTokenLatencySubtitle:`Where this turn's time-to-first-token went, measured by the assistant.`,firstTokenLatencyTitle:`First-token latency`,inputTokensLabel:`Input tokens`,latencyMs:`{ms} ms`,loopExitReasonLabel:`Loop exit reason`,modelLabel:`Model`,normalizedMetadataSubtitle:`Provider, model, timestamps, and usage counts.`,normalizedMetadataTitle:`Normalized metadata`,normalizedSummaryUnavailableSubtitle:`This call still has raw request and response payloads.`,normalizedSummaryUnavailableTitle:`Normalized summary unavailable`,otherLabel:`Other`,outputTokensLabel:`Output tokens`,providerLabel:`Provider`,requestMessagesLabel:`Request messages`,statusLabel:`Status`,stopReasonLabel:`Stop reason`,toolCallsLabel:`Tool calls`,toolsAvailableLabel:`Tools available`,totalCostSoFarLabel:`Total cost so far`,totalToFirstTokenLabel:`Total to first token`,usageSubtitle:`Token and call counts normalized by the assistant route.`,usageTitle:`Usage`},pinnedAppColorSwatches:{colors:{green:`Green`,orange:`Orange`,pink:`Pink`,purple:`Purple`,teal:`Teal`,yellow:`Yellow`},noColor:`No color`},preferencesUsagePanel:{addCreditsAriaLabel:`Add credits`,exhausted:`Add credits to continue.`,pctUsed:`{pct}% used`,resets:`Resets {date}`,settingsAriaLabel:`Usage and billing settings`,title:`Usage`},promptTab:{availableTools:`Available tools`,bannerNoSections:`This call has no normalized prompt sections yet.`,bannerSectionsCount:`{count, plural, one {# normalized request section shown in the order returned by the assistant route.} other {# normalized request sections shown in the order returned by the assistant route.}}`,collapseAll:`Collapse all`,copyAriaLabel:`Copy {title}`,emptyBody:`This call has no normalized prompt sections. Use the Raw tab to inspect the full request payload.`,emptyTitle:`No normalized prompt sections`,expandAll:`Expand all`,formatJavaScript:`JavaScript`,formatJson:`JSON`,formatMarkdown:`Markdown`,formatTypeScript:`TypeScript`,noContentAvailable:`No content available.`,promptSectionsTitle:`Prompt sections`},rawTab:{copyRequestPayloadAriaLabel:`Copy request payload`,copyResponsePayloadAriaLabel:`Copy response payload`,downloadFailedToast:`Failed to download the payload.`,downloadRequestPayloadAriaLabel:`Download request payload`,downloadResponsePayloadAriaLabel:`Download response payload`,loadErrorTitle:`Couldn't load raw payloads`,loading:`Loading raw payloads…`,payloadRequestFailed:`The payload request failed. Try again.`,request:`Request`,requestPayload:`Request payload`,response:`Response`,responsePayload:`Response payload`,retry:`Retry`},redactedCredentialChip:{revealFailed:`Couldn't reveal {name}.`},responseTab:{argumentsPreview:`Arguments preview`,copySectionAria:`Copy section content`,kindAssistantText:`Assistant text`,kindFunctionResponse:`Function response`,kindReasoning:`Reasoning`,kindToolCall:`Tool call`,kindToolResult:`Tool result`,modeResultOnly:`Result-only response`,modeTextOnly:`Text-only response`,modeToolCalling:`Tool-calling response`,noArgumentsPreview:`No structured arguments preview is available for this tool call.`,noAssistantText:`No assistant text was captured for this section.`,noSectionsFallback:`This response has no rendered sections. Raw payloads remain available in the Raw tab, and any normalized response metadata will still be shown when present.`,rawTabHint:`Need the full provider payload? Open the Raw tab for request and response JSON.`,responseMetadata:`Response metadata`,sectionTitle:`Section {number}`,sectionUnavailable:`Section rendering unavailable`,stopReasonChip:`Stop reason: {reason}`,toolChip:`Tool: {name}`},sidebarConversationError:{message:`Your conversations failed to load.`,retry:`Try again`},skillDetailPanel:{actionsAria:`Skill actions`,moreTooltip:`More`},skillsTab:{callLink:`Call {number}`,emptyBody:`This tab lists every <code>skill_load</code> tool call across the conversation. None were detected in the captured LLM calls.`,emptyTitle:`No skills were loaded in this conversation`,loadCount:`{count, plural, one {1 load} other {# loads}}`,summaryStats:`{uniqueCount, plural, one {# unique skill} other {# unique skills}} · {totalLoads, plural, one {# load call} other {# load calls}}`,summaryTitle:`Skills loaded in this conversation`},toolDefinitionsContent:{defaultValue:`default: {value}`,inputSchema:`Input schema`,intro:`{count, plural, one {# tool} other {# tools}} sent with this request. Expand a tool to see its definition and input schema.`,noInputSchema:`No input schema - this tool takes no structured input.`,required:`required`,settings:`Settings`},transcriptMessageBody:{fileUnavailable:`File not available for download`,fileUnavailableHostTimeout:`File not available for download (host file approval may have timed out)`},useConversationLoader:{authFailed:`Failed to authenticate user.`},useConversationSecondaryActions:{assistantBusy:`Your assistant is busy. Try again when it finishes replying.`,retryFailed:`Couldn't retry the response`,summarizeFailed:`Couldn't summarize the conversation`},useSendMessage:{commandFailed:`Couldn't run that command. Please try again.`,doctorUnavailable:`The Doctor isn't available on this assistant.`}},_n={addCreditsModal:{configureAutoReload:`Configure Auto-Reload`},companionIntro:{ariaLabel:`Introducing your companion`,meet:{title:`This is me`,titleNamed:`I’m {name}`,body:`I stay on your desktop, even when Vellum isn’t visible.`},talk:{title:`Talk`,body:`Start a voice conversation.`},type:{title:`Type`,body:`Send a message from here and read the reply here too.`},menu:{title:`Right-click me`,body:`That’s where you hide me or change my size.`},skip:`Skip`,next:`Next`,done:`Got it`},notFound:{badge:`Error 404`,title:`Page not found`,body:`The page you're looking for doesn't exist or may have moved.`,backToAssistant:`Back to your assistant`,goBack:`Go back`},resourcePressureBanner:{title:`Resource utilization is high`,body:`Your assistant has been using elevated resources for an extended period, upgrade to power up your assistant.`,bodyNoUpgrade:`Your assistant has been using elevated resources for an extended period.`,upgrade:`Upgrade`,dontShowAgain:`Don't show again`},sectionActionsButton:{ariaLabel:`{name} actions`},windowsMenuBar:{file:`File`,view:`View`,developer:`Developer`,help:`Help`}},vn={schedulesPanel:{pastToggle:`Past ({count, number})`,loadFailed:`Failed to load schedules.`,retry:`Retry`,emptyTitle:`No schedules yet`,emptyDescription:`Ask your assistant to set one up, or create one yourself.`,newConversation:`New Conversation`,emptyActionsSeparator:`or`,createSchedule:`Create schedule`,useProfileForAll:`Use {profile} for all schedules`,oneTimeHeading:`One-time`},scheduleSummaryCard:{costLoading:`Loading cost`,costCaption:`spent in the last {days, plural, one {# day} other {# days}}`,minimize:`Minimize {title}`,expand:`Expand`},scheduleDetail:{close:`Close`,closeAria:`Close schedule details`,details:`Details`,status:`Status`,toggleAria:`Toggle {name}`,nextRun:`Next run`,lastRun:`Last run`,cadence:`Cadence`,mode:`Mode`,modelProfile:`Model profile`,modelProfileWorkflowNote:`Each step of a workflow picks its own model, so this schedule has no model setting to change.`,chooseModel:`Choose a model`,modelChangeFailed:`Failed to change the model.`,costLabel:`{days, number} Day Cost`,runsLabel:`{days, number} Day Runs`,conversations:`Conversations`,conversation:`Conversation`,conversationArchived:`(archived)`,conversationUnavailable:`(unavailable)`,output:`Output`,error:`Error`,openRunConversationAria:`Open conversation for run at {time}`,toggleRunDetailsAria:`Toggle details for run at {time}`,noRunsYet:`No runs yet.`,recentRuns:`Recent runs`,managedByPlugin:`Managed by plugin {plugin}`,managedByPluginPaused:`Managed by plugin {plugin} · off, {reason}`,delete:`Delete`,deleteConfirmMessage:`Delete "{name}"? This can't be undone.`,cancel:`Cancel`,confirmDelete:`Yes, delete`,viewUsage:`View usage`,turnOnToRun:`Turn this schedule on to run it`,running:`Running…`,runNow:`Run now`,runFailed:`Failed to run schedule.`,deleteFailed:`Failed to delete schedule.`,toggleFailed:`Failed to toggle schedule.`,notUsedForWorkflow:`Not used for workflow runs`,enabled:`Enabled`,disabled:`Disabled`},systemTaskDetail:{openMemorySettings:`Open Memory settings`,turnOnMemory:`Turn on Memory`,memorySettings:`Memory settings`,fallbackModelProfile:`Default (system task model)`,repeats:`Repeats`,nameHeartbeat:`Heartbeat`,nameConsolidation:`Consolidation`,nameRetrospective:`Memory retrospective`,statusManagedOn:`On · Managed by Memory`,statusPaused:`Paused`,pausedRetrospectiveSwitchedOff:`Retrospectives are turned off. Turn them back on under Memory in settings.`,pausedRetrospective:`Memory is off, so retrospectives are paused. Turn Memory back on to resume them.`,pausedConsolidation:`Memory is off, so consolidation is paused. Turn Memory back on to resume consolidation.`},scheduleRow:{toggleAria:`Toggle {name}`},scheduleDisarmReason:{userDisabled:`turned off by you`,pluginRemoved:`plugin removed`,pluginDisabled:`plugin disabled`,declarationRemoved:`removed from plugin`,declarationDisabled:`paused by plugin`}},yn={advisorProfileRow:{chooseProfilePlaceholder:`Choose profile…`,description:`The profile your assistant consults for a second opinion when it wants to check a plan or review its own work.`,title:`Advisor`},aiProviderPicker:{defaultEntryMeta:`Default`},autoTopUpCard:{connectCardBanner:`Auto-reload requires you to connect a credit card.`,disableError:`Failed to disable auto-reload. Please try again.`,loadError:`Failed to load auto-reload configuration.`,toggleLabel:`Enable auto-reload`,updateError:`Failed to save auto-reload settings. Please try again.`},autoTopUpDisableConfirm:{message:`Auto-reload will stop. Any saved payment method stays on file.`,title:`Disable auto-reload?`},billingOnboardingModal:{backgroundConfirmContinue:`Continue`,backgroundConfirmKeepWaiting:`Keep waiting`,backgroundConfirmTitle:`Continue in the background?`},billingPage:{billingTab:`Billing`,billingUnavailable:`Billing isn't available for the current assistant state.`,finishSetupBody:`Your assistant's email address hasn't been set up yet.`,finishSetupButton:`Finish setup`,finishSetupTitle:`Finish setting up your {plan} plan`,loadingBilling:`Loading billing…`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,usageTab:`Usage`},billingPanel:{addCreditsButton:`Add Credits`,balanceLabel:`Credits`,earnCreditsButton:`Earn Free Credits`,lowBalanceToggle:`Custom Low Balance Alert`,subtitle:`Quick overview of your balances and other things`,title:`Credits`},billingStatusHandler:{successToast:`Payment received! Your credit balance will update shortly.`,topUpCancelToast:`Checkout was cancelled. No credits were added.`,upgradeCancelToast:`Upgrade canceled. No changes to your plan.`},bookmarksPage:{emptyDescription:`Hover any message and click the bookmark icon to save it here.`,emptyTitle:`No bookmarks`,errorDescription:`Something went wrong. Please try again.`,errorTitle:`Failed to load bookmarks`,open:`Open`,removeBookmark:`Remove bookmark`,retry:`Retry`,untitledConversation:`Untitled conversation`},bulkOverrideSwapModal:{affectedSummary:`{count, plural, one {# action currently uses {profile}} other {# actions currently use {profile}}}`,applyTo:`{count, plural, one {Apply to # action} other {Apply to # actions}}`,cancel:`Cancel`,changeToLabel:`Change to`,chooseActions:`Choose which actions to update.`,clearAll:`Clear all`,currentlyUsingLabel:`Currently using`,intro:`Update the actions that currently use one profile. The result is saved as individual overrides.`,noticeBody:`It changes the selected actions that use {sourceLabel} today. It does not create an ongoing rule between profiles.`,noticeTitle:`This happens once.`,selectAll:`Select all`,successToast:`Updated {count, plural, one {# action} other {# actions}} to "{targetLabel}".`,targetPlaceholder:`Select a profile…`,title:`Change Action Overrides`,updateFailedToast:`Failed to update overrides. Please try again.`,viaDefault:`Default`,viaOverride:`Override`,willChange:`{count, plural, one {# action will change} other {# actions will change}}`},callSiteOverridesRow:{defaultProfileSuffix:`· Default: {label}`,modelLabel:`Model`,overrideAriaLabel:`Override {displayName}`,pickModelError:`Pick a model`,providerLabel:`Provider`,unavailableOption:`{name} (unavailable)`},chatgptOauthSection:{completeFailed:`Failed to complete sign-in. Please try again.`,completeSignIn:`Complete Sign In`,completingSignIn:`Completing sign-in...`,connected:`ChatGPT subscription connected successfully.`,intro:`Connect your ChatGPT subscription to use OpenAI models without an API key.`,invalidUrl:`Invalid URL. Please paste the full URL from the address bar.`,missingCode:`The URL is missing the authorization code. Make sure you copied the full URL.`,missingState:`The URL is missing the state parameter. Make sure you copied the full URL.`,pasteUrlError:`Please paste the URL from the error page.`,signInButton:`Sign in with ChatGPT`,startFailed:`Failed to start ChatGPT sign-in. Please try again.`,startingSignIn:`Starting sign-in...`,step1Idle:`1. Click "Sign in with ChatGPT" below to open a popup`,step1PasteUrl:`1. Click "Sign in with ChatGPT" to open a popup`,step2:`2. Sign in, then you'll land on an error page - that's expected`,step3:`3. Copy the full URL from that page's address bar and paste it below`,tryAgain:`Try Again`,urlPlaceholder:`Paste callback URL here...`},checkoutBonusModal:{body:`Claim a one-time {amount} credit and we'll add it straight to your account balance. No payment required.`,claim:`Claim {amount} in credits`,decline:`No thanks`,errorToast:`Could not add the credits. Please try again.`,grantedToast:`{amount} in credits added to your account.`,title:`Here's {amount} on us`,unavailableToast:`This offer is no longer available.`},checkoutPage:{awaitingReturnMessage:`Checkout opened in your browser. Finish there to complete your upgrade.`,checkoutFailedMessage:`We couldn't start your checkout. Please try again.`,continueSetup:`Continue setup`,preparingCheckout:`Preparing checkout…`,preparingCheckoutAriaLabel:`Preparing checkout`,reopenCheckout:`Reopen checkout`,tryAgain:`Try again`,viewPlans:`View plans`},communityPage:{communityHubDescription:`Showcases, guides, and projects shared by the community.`,communityHubTitle:`Community Hub`,discordBenefitAnswers:`Get answers faster from the community`,discordBenefitFeedback:`Share feedback and request features`,discordBenefitTeam:`Talk directly with the team`,discordLabel:`Discord`,discordSubtitle:`Talk to the team, share feedback, request features, and get answers faster.`,discordTitle:`Join our community`,followOnXDescription:`Product updates, releases, and behind-the-scenes.`,followOnXTitle:`Follow on X`,heroDescription:`Vellum is built in the open with a growing community of developers, designers, and tinkerers. Here's how to get involved.`,heroTag:`Community`,heroTitle:`Build with us, in the open.`,joinDiscord:`Join Discord`,moreFromVellum:`More from Vellum`,openSourceBenefitContribute:`Contribute fixes and new features`,openSourceBenefitIssues:`Open issues and report bugs`,openSourceBenefitStar:`Star the repo to follow updates`,openSourceLabel:`Open Source`,openSourceSubtitle:`Read the source, star the repo, and contribute fixes and features on GitHub.`,openSourceTitle:`Vellum is open source`,starOnGitHub:`Star on GitHub`,viewSource:`View source`,youtubeChannelDescription:`Walkthroughs, tutorials, and product deep-dives.`,youtubeChannelTitle:`YouTube channel`},completeState:{assistantFallbackName:`your assistant`,returnTo:`Return to {assistantName}`,title:`You're all set!`},credentialsPage:{deleteConfirmLabel:`Delete`,deleteConfirmMessage:`Delete {name}? Tools and integrations using it will lose access.`,deleteConfirmTitle:`Delete credential`,deleteErrorToast:`Failed to delete credential`,deleteSuccessToast:`Deleted {name}.`,inUseConfirmLabel:`Delete anyway`,inUseMessage:`{count, plural, one {{name} is the credential that the connection {connections} uses to send requests. Deleting it stops that connection from answering until you add a new credential.} other {{name} is the credential that the connections {connections} use to send requests. Deleting it stops those connections from answering until you add a new credential.}}`,inUseTitle:`Credential is in use`},customPlanModal:{cancel:`Cancel`,comparedToPrevious:`{delta} compared to previous ({previous})`,continue:`Continue`,creditBundleAriaLabel:`Credit bundle`,creditBundlePlaceholder:`Select a credit bundle`,creditsDocsAriaLabel:`Learn more about credit bundles`,creditsLabel:`Bundle some credits:`,learnMore:`Learn more`,machineSizeAriaLabel:`Machine size`,machineSizeDocsAriaLabel:`Learn more about machine sizes`,machineSizeLabel:`Select a machine size:`,machineSizePlaceholder:`Select a machine size`,recap:`Recap`,storageAriaLabel:`Storage`,storageDocsAriaLabel:`Learn more about storage`,storageLabel:`Select storage:`,storagePlaceholder:`Select storage`,subtitle:`Just better.`,title:`Create a custom plan`,totalBilledMonthly:`Total · Billed monthly`,yourSelection:`Your selection:`},customPlanRow:{configure:`Configure`,currentPlanTag:`Your Current Plan`,genericDescriptor:`Select custom CPU power, Ram and Storage. Or just throw in some tokens.`,prompt:`Need something more tailored to your needs?`,title:`Custom Plan`},dailyCreditLimitCard:{requiredNote:`A daily credit limit is required while auto-reload is enabled.`,toggleLabel:`Daily Credit Limit`},developerPage:{sectionsAriaLabel:`Developer sections`,tabFeatureFlags:`Feature Flags`,tabLifecycle:`Assistant Lifecycle`,tabMemory:`Memory`,tabSentry:`Sentry Testing`},domainStep:{continue:`Continue`,domainLockedMessage:`This domain has been set and cannot be changed.`,domainSetRedirecting:`Domain set - redirecting…`,handleImmutableNotice:`You won't be able to change the handle once set.`,handleLabel:`Handle (public)`,machineBusyNotice:`Your assistant is restarting - you can set the domain in a moment.`,next:`Next`,prefixLabel:`Prefix`,registerSubdomainFailed:`Couldn't register that subdomain. Try a different one.`,skip:`Skip`,subtitle:`Set up an email for your assistant.`,title:`Assistant Email`},emailManagedContent:{addressLabel:`Address`,checkingSubscription:`Checking subscription…`,confirm:`Confirm`,create:`Create`,createEmailFailedFallback:`Failed to create email address.`,creating:`Creating…`,domainLabel:`Domain`,domainRegisteredToast:`Domain {domain} registered.`,domainReleaseFailedToast:`Failed to release domain.`,domainReleasedToast:`Domain released.`,emailAddressLabel:`Email address`,emailCreatedToast:`Email address created.`,emailRemoveFailedToast:`Failed to remove email address.`,emailRemovedToast:`Email address removed.`,emailUsernameAriaLabel:`Email username`,emailUsernamePlaceholder:`hi`,enterSubdomainError:`Enter a subdomain.`,enterUsernameError:`Enter an email username.`,register:`Register`,registerDomainFailedFallback:`Failed to register domain.`,registering:`Registering…`,releaseConfirm:`Release`,releaseDomainAriaLabel:`Release domain`,releaseDomainConfirmMessage:`Are you sure you want to release <code>{domain}</code>? The subdomain will become available for others to claim.`,releaseDomainTitle:`Release Domain`,removeAddressFirstToast:`Remove the email address first.`,removeConfirm:`Remove`,removeEmailAriaLabel:`Remove email address`,removeEmailConfirmMessage:`Are you sure you want to remove <code>{address}</code>? Your assistant will no longer be able to send or receive email at this address.`,removeEmailTitle:`Remove Email Address`,retry:`Retry`,setSubdomainConfirmMessage:`<code>{subdomain}</code> will also become your assistant's public handle. You won't be able to change it once set.`,setSubdomainTitle:`Set Subdomain`,subdomainExamplePlaceholder:`my-assistant`,subdomainFallback:`subdomain`,subdomainHint:`Each assistant gets its own subdomain. Lowercase letters, numbers, and hyphens only.`,subdomainLabel:`Subdomain`,subscriptionWarningBody:`We couldn't reach the billing service. The form below assumes managed email is enabled for your org. If it isn't, registering a domain will fail.`,subscriptionWarningTitle:`Couldn't verify subscription status`,upgradeButton:`Upgrade`,upgradeNoticeBody:`Upgrade to a plan that includes an email address for your assistant. No provider setup required.`,upgradeNoticeTitle:`Give your assistant its own email address`,usageSummary:`{sent} / {limit} sent today · {received} received`},emailServiceCard:{apiKeyConfigured:`{providerName} API key configured. To reconfigure, run the <code>{setupSkill}</code> skill.`,connecting:`Connecting to the Vellum platform…`,openProvider:`Open {providerName}`,platformLoginNotice:`Log in to the Vellum platform to manage email settings.`,providerLabel:`Provider`,saveSuccessToast:`Email settings saved.`,setupInstructions:`Configure {providerName} via the assistant CLI: ask the assistant to run the <code>{setupSkill}</code> skill. It walks you through storing the API key, detecting the domain, and (optionally) wiring up an inbound webhook.`,subtitle:`Configure how your assistant sends and receives email`,title:`Email`},errorStates:{fetchErrorTitle:`Couldn't reach billing`,goToBilling:`Go to billing`},freeDowngradeConfirmModal:{bodyCancelOnly:`You'll be taken to Stripe to cancel your subscription.`,bodyWithFeatures:`Downgrading removes the following Pro features. You'll be taken to Stripe to cancel your subscription.`,cancel:`Cancel`,confirm:`Downgrade to Base`,title:`Downgrade to Base?`},generalPage:{chooseAssistant:`Choose Assistant`,computeResourcesLoginNotice:`Log in to the Vellum platform to manage compute resources.`,computeResourcesSubtitle:`Monitor resource usage and manage your assistant's compute profile.`,computeResourcesTitle:`Compute & Resources`,current:`Current`,customize:`Customize`,dangerZoneTitle:`Danger Zone`,preferencesSubtitle:`Customize how Vellum looks and behaves on this device.`,preferencesTitle:`Preferences`,retireAssistantDescription:`Permanently retire this assistant and delete all associated data.`,retireAssistantLoginNotice:`Log in to the Vellum platform to retire this assistant.`,retireAssistantTitle:`Retire Assistant`,sleepPolicyLoginNotice:`Log in to the Vellum platform to manage sleep policy.`,sleepPolicySubtitle:`Control how long this assistant stays awake when idle.`,sleepPolicyTitle:`Sleep Policy`,switchAssistantSubtitle:`Choose which assistant this device is connected to.`,switchAssistantTitle:`Switch Assistant`,twoFactorDescription:`Require a code from an authenticator app when you sign in.`,twoFactorLoginNotice:`Log in to the Vellum platform to manage two-factor authentication.`,twoFactorTitle:`Two-Factor Authentication`,updateWindow:`Update Window`,updatesLoginNotice:`Log in to the Vellum platform to manage software updates.`,versionSubtitle:`Manage your assistant's software version and updates.`,versionTitle:`Version`},imageGenerationCard:{activeModelLabel:`Active Model`,apiKeyLabel:`API Key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,geminiApiKeyPlaceholder:`Enter your Gemini API key`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,modelAriaLabel:`Image generation model`,modelUpdateFailedToast:`Failed to update image generation model. Please try again.`,openaiApiKeyPlaceholder:`Enter your OpenAI API key`,providerAriaLabel:`Image generation provider`,providerLabel:`Provider`,savedToast:`Image generation settings saved.`,subtitle:`Configure which model your assistant uses to generate images`,title:`Image Generation`,vellumNote:`Image generation runs through your Vellum account.`},integrationsPage:{accountConnectedToast:`{providerLabel} account connected successfully.`,accountConnectedToastGeneric:`Account connected successfully.`,connectFailedToast:`Failed to connect {providerLabel}.`,connectFailedToastGeneric:`Failed to connect. Please try again.`,emptyAllEnabledTitle:`All Integrations Are Enabled`,emptyDefaultSubtitle:`Check your connection and try again.`,emptyDefaultTitle:`No Integrations Available`,emptyEnabledSubtitle:`Connect an integration to get started.`,emptyEnabledTitle:`No Enabled Integrations`,emptyNotEnabledSubtitle:`All available integrations have been connected.`,emptySearchSubtitle:`No integrations matched "{query}"`,emptySearchTitle:`No integrations matched`,filterAll:`All`,filterAriaLabel:`Filter integrations`,filterEnabled:`Enabled`,filterNotEnabled:`Not Enabled`,loadFailed:`Failed to load integrations. Please try again.`,loading:`Loading...`,noAssistant:`No assistant found. Hatch an assistant to connect integrations.`,oauthErrorDenied:`Authorization was denied. Please try again.`,oauthErrorExchangeFailed:`Failed to complete authorization. Please try again.`,oauthErrorIdentityFailed:`Failed to verify account identity. Please try again.`,oauthErrorStateExpired:`Authorization expired. Please try again.`,oauthErrorStateInvalid:`Authorization state was invalid. Please try again.`,searchAriaLabel:`Search integrations`,searchPlaceholder:`Search Integrations`,tabMcp:`MCP`,tabOAuth:`OAuth`,tipBanner:`<tip>Tip:</tip> You can enable integrations by mentioning them in chat.`},invoicesTable:{hideButton:`Hide Invoices`,showButton:`Show Invoices`,title:`Invoices`},languageModelCard:{defaultProviderUnavailable:`Your default provider is not available.`,manage:`Manage`,overridesTitle:`Overrides`,subtitle:`Profiles choose which model answers. Providers supply access to it`,title:`Language Model`},listeningLanguageCard:{change:`Change`,subtitle:`The language you speak to your assistant. Applies from your next spoken turn.`,title:`Listening language`},manageProfilesBlockedDeleteModal:{actionOverridesTitle:`Action overrides`,cancel:`Cancel`,clauseActionOverrides:`is used by {count, plural, one {# action override} other {# action overrides}}`,clauseDefaultProfile:`is your default profile`,clauseRunsBoth:`runs {schedules, plural, one {# schedule} other {# schedules}} and {reminders, plural, one {# reminder} other {# reminders}}`,clauseRunsReminders:`runs {count, plural, one {# reminder} other {# reminders}}`,clauseRunsSchedules:`runs {count, plural, one {# schedule} other {# schedules}}`,disabledTargetTooltip:`Enable this profile to move schedules onto it.`,moreSchedules:`and {count} more`,reassignAndDelete:`Reassign and Delete`,replacementLabel:`Replacement profile`,replacementPlaceholder:`Select a replacement…`,saving:`Saving…`,scheduleLookupFailed:`We could not check which schedules use this profile. Any schedule pinned to it moves to the replacement as well.`,schedulesTitle:`Schedules`,summaryNoReferences:`Choose a replacement profile for "{display}". Anything still pointing at it moves there before it is deleted.`,summaryOneClause:`"{display}" {clause1}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,summaryThreeClauses:`"{display}" {clause1}, {clause2}, and {clause3}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,summaryTwoClauses:`"{display}" {clause1} and {clause2}. Pick a replacement below and those references move to it, then "{display}" is deleted.`,title:`Choose a Replacement Profile`},mcpAddServerModal:{addServer:`Add Server`,adding:`Adding...`,apiKeyHeaderPlaceholder:`X-API-Key`,apiKeyLabel:`API key`,apiKeyPlaceholder:`sk_...`,argsLabel:`Arguments (space-separated)`,argsPlaceholder:`--port 3000`,authApiKey:`API Key`,authBearer:`Bearer Token`,authNone:`None`,authOAuth:`OAuth`,authenticationLabel:`Authentication`,bearerPlaceholder:`tok_...`,bearerTokenLabel:`Bearer token`,cancel:`Cancel`,commandLabel:`Command`,commandPlaceholder:`npx -y @modelcontextprotocol/server-example`,description:`Connect to a Model Context Protocol server to extend available tools.`,headerNameLabel:`Header name`,namePlaceholder:`my-server`,oauthHint:`OAuth credentials will be configured through a browser-based authorization flow after the server is added.`,serverNameLabel:`Server name`,serverUrlLabel:`Server URL`,title:`Add MCP Server`,transportLabel:`Transport`,transportSse:`SSE`,transportStdio:`Stdio (command)`,transportStreamableHttp:`Streamable HTTP`,urlPlaceholder:`https://example.com/mcp`},mcpPage:{addServerButton:`Add Server`,emptyAddSubtitle:`Add an MCP server to extend your assistant with external tools.`,emptyChatSubtitle:`Chat with your assistant to set up an MCP server.`,emptyTitle:`No MCP Servers`,loadError:`Failed to load MCP servers. Check that an assistant is running.`,loading:`Loading MCP servers...`,reloadAriaLabel:`Reload MCP servers`,reloadTooltip:`Reload all servers`,removeDialogConfirm:`Remove`,removeDialogMessage:`Are you sure you want to remove "{serverId}"? This will disconnect all tools provided by this server.`,removeDialogTitle:`Remove MCP Server`,setupPrompt:`Help me set up an MCP server to extend you with external tools.`,subtitle:`Manage Model Context Protocol server connections and their registered tools.`,title:`MCP Servers`,toastAddFailed:`Failed to add {name}`,toastAdded:`Added {name}`,toastAlreadyAuthenticated:`{serverId} is already authenticated`,toastAuthFailed:`Authentication failed for {serverId}`,toastAuthPollingFailed:`Authentication polling failed for {serverId}`,toastAuthStartFailed:`Failed to start authentication for {serverId}`,toastAuthTimedOut:`Authentication timed out for {serverId}`,toastAuthenticatedSuccess:`{serverId} authenticated successfully`,toastDisableFailed:`Failed to disable {serverId}`,toastEnableFailed:`Failed to enable {serverId}`,toastOAuthRevokeFailed:`Failed to revoke OAuth for {serverId}`,toastOAuthRevoked:`OAuth credentials revoked for {serverId}`,toastReloadFailed:`Failed to reload MCP servers`,toastReloadSuccess:`MCP servers reloaded`,toastRemoveFailed:`Failed to remove {serverId}`,toastRemoved:`Removed {serverId}`,toastUpdateFailed:`Failed to update {serverId}`,toastUpdated:`Updated {serverId}`,totalTokens:`~{count} total tokens`,totalTools:`{count, plural, one {# total tool} other {# total tools}}`},mcpServerCard:{authenticate:`Authenticate`,authenticating:`Authenticating...`,configure:`Configure`,configureTooltip:`Configure`,estimatedTokens:`~{count} tokens`,oauthBadge:`OAuth`,reAuth:`Re-auth`,reAuthTooltip:`Re-authenticate OAuth`,registeredTools:`{count, plural, one {# registered tool} other {# registered tools}}`,removeServerAriaLabel:`Remove {serverId}`,removeServerTooltip:`Remove server`,revoke:`Revoke`,revokeOAuthTooltip:`Revoke OAuth credentials`,revoking:`Revoking...`,statusConnected:`Connected`,statusDisabled:`Disabled`,statusError:`Error`,statusNeedsAuth:`Needs Auth`,toggleDisableAriaLabel:`Disable {serverId}`,toggleEnableAriaLabel:`Enable {serverId}`,toolCount:`{count, plural, one {# tool} other {# tools}}`,toolTokensAbbrev:`~{count} tok`},mcpServerDetailModal:{apiKey:`API key`,apiKeyPlaceholder:`sk_...`,apiKeyPlaceholderKeep:`•••••••• (leave blank to keep current)`,authApiKey:`API Key`,authBearerToken:`Bearer Token`,authNone:`None`,authentication:`Authentication`,bearerToken:`Bearer token`,bearerTokenPlaceholder:`tok_...`,bearerTokenPlaceholderKeep:`•••••••• (leave blank to keep current)`,cancel:`Cancel`,defaultRiskLevel:`Default risk level`,description:`{transport} transport · {status}`,emptyDescription:`-`,headerName:`Header name`,headerNamePlaceholder:`X-API-Key`,oauthBadge:`OAuth`,oauthManagedHint:`managed via OAuth flow`,registeredToolsHeading:`Registered tools ({count})`,riskHigh:`High`,riskLow:`Low`,riskMedium:`Medium`,save:`Save`,saving:`Saving...`,tableDescription:`Description`,tableTokens:`Tokens`,tableTool:`Tool`,tokenOverhead:`Total estimated token overhead: ~{count} tokens`,toolEstimatedTokens:`~{count}`},notificationsPage:{description:`Manage how Vellum notifies you on this Android device.`,title:`Notifications`},overridesCallSiteList:{emptySearch:`No actions match your search.`},overridesDetailPanel:{advisorSection:`Advisor`,bulkChange:`Bulk change`,bulkChangeNoCandidatesTitle:`No actions currently use a profile`,bulkChangeUnsavedTitle:`Save or reset your changes first`,customProfileOption:`Custom`,description:`Customize which model profile specific actions should use. Uses your default profile if no override is set.`,loadErrorHint:`Make sure your assistant is running`,loadErrorTitle:`Couldn't load actions`,otherDomain:`Other`,overridesResetToast:`Overrides reset.`,overridesSavedToast:`Overrides saved.`,resetConfirmMessage:`Every action override will be reset and will follow its default. This cannot be undone.`,resetFailedToast:`Failed to reset overrides. Please try again.`,resetToDefaults:`Reset to Defaults`,retry:`Retry`,save:`Save`,saveFailedToast:`Failed to save overrides. Please try again.`,searchPlaceholder:`Search actions…`,title:`Action Overrides`},packageSwitchConfirmModal:{cancel:`Cancel`},pairDeviceCard:{copyError:`Could not copy the pairing address.`,generateButton:`Generate pairing QR`,generateButtonMinting:`Generating…`,generateButtonRegenerate:`Generate new code`,noTunnelMore:`Other providers and options: <code>{command}</code>`,noTunnelNext:`The tunnel prints an https address. Paste it into Public URL below, and leave the tunnel running while you pair and use other devices.`,noTunnelTitle:`Open a tunnel first`,noTunnelWhy:`Other devices reach {name} over the internet through a tunnel from this computer. In a terminal here, run:`,publicUrlHelper:`The https address your devices can reach this assistant at (your Tailscale URL, or another tunnel's).`,publicUrlHelperTunnel:"This address comes from `vellum tunnel` on this computer. Edit it if your devices reach this assistant at a different URL.",publicUrlLabel:`Public URL`,publicUrlPlaceholder:`https://your-assistant.ts.net`,subtitle:`Scan with another device's camera, or open the link on it, to use {name} there.`,subtitleFallbackName:`this assistant`,title:`Pair a device`},pairDeviceClient:{connectivityHint:"If a scan can't connect, make sure a tunnel is running on the host (`vellum tunnel`) and the public URL points at it, then generate a new code.",httpError:`Pairing failed (HTTP {status}).`,networkError:`Couldn't reach the assistant. Make sure it's running and try again.`,unexpectedResponse:`The assistant returned an unexpected response.`},pairDeviceReady:{copiedButton:`Copied`,copyButton:`Copy`,expiredBody:`Generate a new code to pair a device.`,expiredTitle:`This pairing code expired.`,expiresIn:`Expires in {time} · single-use.`,qrTitle:`Device pairing QR code`,singleUse:`Single-use.`},pairDeviceUrl:{loopback:`This is a loopback address other devices can't reach. Enter the assistant's public https URL.`,nonHttps:`The URL must use https so your devices can connect securely.`,serviceFallbackName:`the tunnel provider`,serviceWebsite:"This is {service}'s website, not your assistant's address. Run `vellum tunnel` on the host to get one.",unparseable:`Enter a valid URL, e.g. https://your-assistant.ts.net.`},pairedDevicesSection:{confirmMessage:`The {platform} device {hash} loses access to this assistant. Its access tokens are invalidated immediately; that device must be paired again from this machine to reconnect.`,confirmTitle:`Revoke this device?`,dateUnknown:`unknown`,datesLine:`Paired {paired} · Last used {lastUsed}`,hostRevokeDisabledTitle:`This is this machine's own credential; revoking it would lock the host out of the assistant.`,platformUnknown:`Unknown`,revokeButton:`Revoke`,thisMachine:`This machine`,title:`Paired devices ({count})`},paymentMethodsCard:{addButton:`Add Payment Method`,empty:`No payment method on file. Add one to use auto-reload.`,loadError:`Failed to load payment methods.`,loading:`Loading…`,removeConfirmCancel:`Keep card`,removeConfirmConfirm:`Remove`,removeConfirmMessage:`Removing your card will turn off auto-reload.`,removeConfirmPending:`Removing…`,removeConfirmTitle:`Remove payment method?`,removeError:`Failed to remove the payment method. Please try again.`,subtitle:`Payment methods linked to your account.`,title:`Payment Methods`},pendingPairingRequests:{approveButton:`Approve`,denyButton:`Deny`,instruction:`A device is asking to use this assistant. Approve a request only after confirming its code matches the one shown on the requesting device.`,requestedMeta:`Requested {when} from {ip}`,requestedMetaHost:`Requested {when} from this computer`,title:`Pairing requests`},planCard:{usageBalanceAddCredits:`Add`,usageBalanceExhausted:`Add credits to continue using your assistant`,usageBalancePctUsed:`{pct}% used`,usageBalanceResets:`Resets {date}`,usageBalanceTitle:`Usage Balance`,usageChip:`{name} usage, reset monthly`},planColumnCard:{currentPlan:`Current Plan`,includes:`Includes:`,recommended:`Recommended`},plansPage:{alreadyOnPlanToast:`You're already on this plan.`,back:`Back`,billedMonthlyCaption:`Billed monthly`,cancelAnytimeFooter:`You can cancel or change your plan anytime you want. To learn more <docsLink>Read our Docs.</docsLink>`,checkoutFailedToast:`Failed to start the upgrade checkout. Please try again.`,downgradeTo:`Downgrade to {name}`,featureComputer:`{machine} Computer`,featureCreditsIncluded:`{amount} in credits included`,featureStorage:`{gib} GB Storage`,foreverCaption:`Forever`,freeFeaturePayAsYouGo:`Pay-as-you-go credits`,freeFeatureSmallComputer:`Small Computer`,freeFeatureStorage:`{gib} GB Storage`,freePriceLabel:`Free`,heading:`Give your assistant more power`,loadingPlansAriaLabel:`Loading plans`,planUpdatedToast:`Plan updated.`,startFreeCta:`Start Free`,subheading:`Choose the level that matches how much you want it to take on.`},privacyPage:{llmLogRetentionDescription:`How long to keep LLM request and response logs on this device. These logs record the prompts and completions sent to model providers and are used for debugging. Shorter retention improves privacy; longer retention helps troubleshoot issues.`,llmLogRetentionLabel:`LLM Request Log Retention`,retentionDontRetain:`Don't retain`,retentionKeepForever:`Keep forever`,retentionNinetyDays:`90 days`,retentionOneDay:`1 day`,retentionOneHour:`1 hour`,retentionSevenDays:`7 days`,retentionThirtyDays:`30 days`,shareAnalyticsHelper:`Send aggregated product usage data`,shareAnalyticsLabel:`Share Analytics`,shareDiagnosticsHelper:`Send crash reports, conversation traces, and session replay data`,shareDiagnosticsLabel:`Share Diagnostics`,subtitleWithPolicy:`View details about what data we collect and how it's used in our <policyLink>privacy policy</policyLink>.`,title:`Privacy`},profileAdvancedParams:{contextWindowLabel:`Context Window`,defaultValueLabel:`Default · {value}`,effortLabel:`Effort`,effortSegmentDefault:`default`,enableExtendedThinkingLabel:`Enable extended thinking`,maxOutputTokensLabel:`Max Output Tokens`,reset:`Reset`,snapshotsHint:`Fields left at their default are saved with the values shown and won't change if the assistant defaults change later.`,speedLabel:`Speed`,streamThinkingTokensLabel:`Stream thinking tokens`,temperatureLabel:`Temperature`,thinkingLevelInheritHint:`(default = inherit)`,thinkingLevelLabel:`Thinking level`,tokensAriaLabel:`{label} (tokens)`,topPLabel:`Top P`,verbosityLabel:`Verbosity`},profileDetailPanel:{createProfile:`Create Profile`,defaultTitle:`Profile`,delete:`Delete`,deleting:`Deleting…`,managedTag:`Managed by Vellum`,newProfileTitle:`New Profile`,save:`Save`,saveAsNew:`Save As New`,saveChanges:`Save Changes`,saving:`Saving…`},profileEditor:{subscriptionSteeringHint:`Your ChatGPT subscription is available as the ChatGPT provider.`},profileEditorFields:{activeLabel:`Active`,addApiKey:`Add API key`,advanced:`Advanced`,createNewProvider:`+ Create new provider`,descriptionLabel:`Description <optional>(optional)</optional>`,descriptionPlaceholder:`Describe when to use this profile`,displayNameLabel:`Display Name`,displayNamePlaceholder:`e.g. Fast & Cheap`,keyLabel:`Key`,keyPlaceholder:`e.g. fast-cheap`,nameLabel:`Name`,newProviderNote:`New provider connection will show up in the Providers section.`,providerLabel:`Provider`,selectProviderPlaceholder:`Select a provider…`,setUp:`Set up`},profileEditorModal:{cancel:`Cancel`,close:`Close`,editProfileTitle:`Edit Profile`,newProfileTitle:`New Profile`,platformTag:`Platform`,profileFallbackTitle:`Profile`,save:`Save`,saveAsNew:`Save As New`,saving:`Saving…`},profileEditorProviderSection:{chooseFromList:`Choose from list`,connectionNotFound:`This profile referenced a credential that no longer exists. Saving resets it to use the provider's available key.`,customModelAriaLabel:`Custom model ID`,customModelPlaceholder:`provider/model-id`,enterCustomModelIdHint:`Enter the exact model identifier your provider expects. It's sent to the connection as-is.`,enterCustomModelIdOption:`Enter a custom model ID…`,modelAriaLabel:`Model`,modelEmptyConfigureConnectionHint:`No models available. Configure models on the provider connection first.`,modelEmptyConfigureConnectionPlaceholder:`Configure models on connection`,modelEmptyNoProviderPlaceholder:`Select a provider first`,modelEmptyUnknownHint:`No models are available for this provider in this app version. Update the app, or enter a custom model ID.`,modelEmptyUnknownPlaceholder:`No models available`,modelLabel:`Model`,noProviderConnectionsHint:`No provider connections. Open Providers to add one.`,providerLabel:`Provider`,providerNotFoundSuffix:`(not found)`,selectModelError:`Select a model.`,selectModelPlaceholder:`Select a model`,selectProviderPlaceholder:`Select a provider…`},profileRow:{actionsAriaLabel:`Actions for {displayName}`,defaultTag:`Default`,delete:`Delete`,disable:`Disable`,disabledTag:`Disabled`,edit:`Edit`,enable:`Enable`,makeDefault:`Make Default`,managedByVellum:`Managed by Vellum`,openProfileAriaLabel:`Open profile {displayName}`,providerUnavailableDefault:`This profile's provider is not available.`,providerUnavailableFixable:`{message} Click to fix.`,view:`View`},profilesSection:{createProfile:`Create Profile`,emptyState:`No profiles yet. Create one to get started.`,loading:`Loading profiles…`,title:`Profiles`},providerCreateForm:{add:`Add`,addNamed:`Add {name}`,addProviderDescription:`Choose a provider and paste its API key.`,addProviderTitle:`Add Provider`,advanced:`Advanced`,apiKeyPlaceholder:`Enter your API key`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.x.ai/v1`,baseUrlPlaceholderOllama:`http://127.0.0.1:11434/v1`,baseUrlHintOllama:`Leave blank to use the local Ollama default, or enter a remote or non-default host.`,cancel:`Cancel`,customProviderHint:`Custom providers connect to any endpoint that serves the OpenAI-compatible API - xAI, Groq, LM Studio, vLLM, and similar.`,customProviderOption:`Custom provider`,displayNameLabel:`Display Name <optional>(optional)</optional>`,displayNamePlaceholder:`e.g. My Anthropic Key`,emptyServerResponse:`Server returned an empty response. Please try again.`,enterApiKeyOrCredential:`Enter an API key or select an existing credential.`,failedSaveApiKey:`Failed to save API key. Please try again.`,failedSaveProvider:`Failed to save provider. Please try again.`,localEndpointHint:`Leave the key empty for local endpoints - they connect keyless.`,modelsHint:`Comma-separated model identifiers exposed by your endpoint.`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,nameLabel:`Name`,namePlaceholder:`xAI`,providerAriaLabel:`Provider`,providerConnectedToast:`Provider connected`,providerLabel:`Provider`,saving:`Saving…`,useChatgptSignIn:`Use the "Sign in with ChatGPT" button to connect your subscription.`},providerDetailPanel:{addProviderTitle:`Add Provider`},providerEditorApiKeySection:{advanced:`Advanced`,apiKeyLabel:`API Key`,cancel:`Cancel`,credentialReferenceAriaLabel:`Credential reference`,credentialReferenceLabel:`Credential Reference`,credentialReferenceSuffix:`· Credential reference`,loading:`Loading…`,newCredential:`+ New Credential`,newCredentialNameLabel:`New Credential Name`,newCredentialPlaceholder:`e.g. team-key`,use:`Use`},providerEditorContent:{apiKeyPlaceholder:`Enter your API key`,baseUrlLabel:`Base URL`,baseUrlPlaceholder:`https://api.example.com/v1`,baseUrlPlaceholderOllama:`http://127.0.0.1:11434/v1`,baseUrlHintOllama:`Leave blank to use the local Ollama default, or enter a remote or non-default host.`,cancel:`Cancel`,displayNameLabel:`Display Name <optional>(optional)</optional>`,displayNamePlaceholder:`e.g. My Anthropic Key`,editProviderSettingsFallback:`Edit provider settings.`,editProviderTitle:`Edit Provider`,editingConnection:`Editing {name}.`,emptyServerResponse:`Server returned an empty response. Please try again.`,failedSaveApiKey:`Failed to save API key. Please try again.`,failedSaveProvider:`Failed to save provider. Please try again.`,modelsHint:`Comma-separated model identifiers exposed by your endpoint.`,modelsLabel:`Models`,modelsPlaceholder:`model-1, model-2`,nothingToEdit:`Nothing to edit. Close and try again.`,saveChanges:`Save Changes`,saving:`Saving…`},providerRow:{actionsAriaLabel:`Actions for {displayName}`,customTag:`Custom`,customTagTitle:`A provider you created, served by an OpenAI-compatible endpoint.`,defaultTag:`Default`,defaultTagTitle:`Built-in profiles (Balanced, Quality, Cost, Speed) use this provider.`,delete:`Delete`,edit:`Edit`,localTag:`Local`,localTagTitle:`Runs models on this machine.`,managedTag:`Managed`,managedTagTitle:`Runs on Vellum's managed credentials.`,openProviderAriaLabel:`Open provider {displayName}`,setAsDefault:`Set as default`},providersSection:{addProvider:`Add Provider`,empty:`No providers yet. Add one to get started.`,loadError:`Failed to load providers. Please try again.`,title:`Providers`},provisioningState:{allDoneStatus:`All done!`,confirmingCaption:`This might take a couple seconds.`,continueInBackground:`Continue in the background`,creditsChip:`{count} credits`,dimensionsComplete:`{dimensions} complete`,goToBilling:`Go to billing`,machineLabel:`Machine`,packageChip:`{name} package`,planReadyStatus:`Your plan is ready`,retryInBackground:`Retry in the background`,srOnlyTo:`to`,stalledCaption:`This may take a couple of minutes.`,statusComplete:`Complete`,statusPending:`Pending`,storageLabel:`Storage`,takingLongerStatus:`This is taking longer than expected`,tryAgain:`Try again`,waitingCaptionLong:`Still working. This can take a minute or two.`,waitingCaptionShort:`This might take a couple seconds.`},sharedUi:{checkingDomain:`Checking domain…`,domainVerified:`Domain verified`,failedTitle:`Domain verification failed. DNS records may not have propagated correctly. You could try releasing and re-registering the domain.`,managedLabel:`Managed`,managedServicesBanner:`Managed services are metered and deducted from your Vellum account balance. <link>View pricing</link>`,modeToggleAriaLabel:`Service mode`,unknownStatus:`Unknown status`,unknownStatusTitle:`Unable to retrieve domain verification status.`,verificationFailed:`Verification failed`,verifiedTitle:`DNS records have been verified. Your domain is ready to send and receive email.`,verifyingDomain:`Verifying domain…`,verifyingTitle:`DNS records have been provisioned. Waiting for the email provider to verify them - this usually takes a few minutes.`,yourOwnLabel:`Your Own`},soundsSections:{addSound:`Add sound`,allSoundsAdded:`All sounds added`,defaultBlip:`Default Blip`,enableEvent:`Enable {eventName}`,enableSoundEffects:`Enable sound effects`,enableSoundEffectsDescription:`Master switch for every event-driven sound.`,noSoundFiles:`No sound files yet. Drop audio files into data/sounds/ in your workspace.`,preview:`Preview`,previewDefaultBlip:`Preview default blip`,previewSoundAriaLabel:`Preview {filename}`,removeSoundAriaLabel:`Remove {filename}`,soundEventCharacterPoke:`Character Poke`,soundEventMessageSent:`Message Sent`,soundEventNeedsInput:`Needs Input`,soundEventNewConversation:`New Conversation`,soundEventNotification:`Notification`,soundEventRandom:`Random`,soundEventTaskComplete:`Task Complete`,soundEventTaskFailed:`Task Failed`,soundEventsDescription:`Add one or more sounds per event. When multiple are configured, one plays at random.`,soundEventsTitle:`Sound Events`,volume:`Volume`,volumeAriaLabel:`Sound effect volume`},speechToTextCard:{subtitle:`Configure how your assistant transcribes speech`,title:`Speech-to-Text`},textToSpeechCard:{subtitle:`Configure how your assistant speaks`,title:`Text-to-Speech`},upgradeCancelPage:{billingUnavailable:`Billing isn't available for the current assistant state.`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,redirectingBody:`Returning you to billing settings…`,returnToBilling:`Return to billing`,title:`Upgrade canceled`},upgradeSuccessPage:{cantConfirmUpgrade:`We can't confirm your upgrade for the current assistant. Return to billing to retry.`,fetchErrorBody:`We hit a problem checking your subscription. Your upgrade may still be processing. Return to billing to refresh.`,fetchErrorTitle:`Couldn't reach billing`,finalizingBody:`Stripe is confirming your subscription. This usually takes a few seconds.`,finalizingTitle:`Finalizing your upgrade…`,goToBilling:`Go to billing`,platformLoginNotice:`Log in to the Vellum platform to manage billing and usage.`,processingFallback:`We're processing your upgrade. Refresh in a moment to see your new plan.`,successBody:`Your Pro plan is active. You'll be redirected back to billing in a moment.`,welcomeTitle:`Welcome to Pro`},usageTab:{analyzeCostsButton:`Analyze costs with assistant`,breakdownTitle:`Breakdown`,cacheCreatedLabel:`Cache Created`,cacheReadLabel:`Cache Read`,costAssistantSubtitle:`Review recent spend and tune model profile choices.`,costAssistantTitle:`Cost assistant`,costLabel:`Cost`,dailyTrend:`Daily Trend`,dailyTrendBy:`Daily Trend by {group}`,directInputTokensLabel:`Direct Input Tokens`,failedToLoadUsage:`Failed to load usage.`,groupByActor:`Actor`,groupByConversation:`Conversation`,groupByModel:`Model`,groupByProfile:`Profile`,groupByProvider:`Provider`,groupBySchedule:`Schedule`,groupByTask:`Action`,groupColumnLabel:`Group`,hourlyTrend:`Hourly Trend`,hourlyTrendBy:`Hourly Trend by {group}`,inferenceUsageTitle:`Inference Usage`,llmCallsLabel:`LLM Calls`,noBreakdownDataSubtitle:`No usage recorded for this grouping`,noBreakdownDataTitle:`No breakdown data`,optimizeSettingsButton:`Optimize settings`,outputTokensLabel:`Output Tokens`,percentOfTotalLabel:`% of total`,range30d:`Last 30 days`,range7d:`Last 7 days`,range90d:`Last 90 days`,rangeAll:`All time`,rangeToday:`Today`,rangeYesterday:`Yesterday`,retry:`Retry`,title:`Usage`,tokensLabel:`Tokens`,totalsAriaLabel:`Totals`,turnsLabel:`Turns`,unknownSchedule:`Unknown schedule ({scheduleId})`},usageTrendChart:{noDailyData:`No daily data`,noHourlyData:`No hourly data`,noUsageInRange:`No usage recorded in this time range`,total:`Total`},useDaemonConfig:{assistantNotReadyToast:`Assistant not ready. Please try again.`,saveApiKeyFailedToast:`Failed to save {providerName} API key. Please try again.`},usePairDevice:{mintErrorFallback:`Something went wrong while generating the code.`},usePendingPairingRequests:{actionErrorFallback:`Something went wrong. Try again.`,denyAlreadyApproved:`This request was already approved somewhere else, so the deny didn't take effect and the device is now paired.`,pollErrorFallback:`Something went wrong while checking for pairing requests.`},useProfileSave:{createdToast:`Profile "{name}" created`},useProviderActions:{deleteFailedToast:`Failed to delete the provider. Please try again.`,deleteInUseToast:`This provider is in use by a profile or as the default provider. Update those settings before deleting it.`,setDefaultFailedToast:`Failed to set the default provider. Please try again.`},voicePage:{activationKeyLabel:`Shortcut:`,allowMicrophoneAccess:`Allow Microphone Access`,captionsSubtitle:`Show live text of what you and the assistant say during a voice conversation.`,captionsTitle:`Captions`,customKey:`Custom`,defaultBadge:`Default`,enableVoiceShortcut:`Enable voice mode shortcut`,fnKeyLabel:`Fn`,fnRefusedNote:`Fn needs Input Monitoring. Grant it in System Settings, or set a custom shortcut.`,focusedTabNote:`The shortcut only works while this tab is focused, and browsers may intercept some chords (e.g. Ctrl+T) before the page can see them. For a shortcut that works anywhere, use the Vellum desktop app.`,grantMicrophoneAccessHint:`Grant microphone access to list your available input devices.`,interruptSensitivityAriaLabel:`Interrupt sensitivity`,interruptSensitivityDescription:`How easily talking over the assistant interrupts it. Lower it if the assistant cuts itself off on background noise or filler words; raise it to interrupt more quickly.`,interruptSensitivityHigh:`High`,interruptSensitivityLabel:`Interrupt sensitivity`,interruptSensitivityLow:`Low`,interruptSensitivityMedium:`Medium`,microphoneAriaLabel:`Microphone`,microphoneFallbackLabel:`Microphone {index}`,microphoneSubtitle:`Which input device is used for dictation and voice conversations.`,microphoneTitle:`Microphone`,pauseBeforeReplyAriaLabel:`Pause before reply`,pauseBeforeReplyDescription:`How long the assistant waits after you stop speaking before it replies. A longer pause lets you gather your thoughts mid-sentence without being cut off.`,pauseBeforeReplyLabel:`Pause before reply`,pressShortcut:`Press a shortcut…`,recommendedBadge:`Recommended`,recordingPrompt:`Press a chord or keystroke…`,resetToDefaults:`Reset to defaults`,savedMicrophone:`Saved microphone`,savedMicrophoneNotConnected:`Saved microphone (not connected)`,sectionCaptionsHeading:`Captions`,sectionInputDescription:`How you talk to your assistant.`,sectionInputHeading:`Input`,sectionOutputDescription:`How your assistant sounds.`,sectionOutputHeading:`Output`,shortcutChordHint:`Hold a modifier (Cmd, Ctrl, Option, or Shift) and press a key.`,shortcutConflict:`Already used by {command}`,speechServicesBannerLink:`Set it up in Models & Services`,speechServicesBannerPrompt:`Want to use your own API key for STT or TTS, or set a custom voice?`,systemDefault:`System Default`,turnTakingSubtitle:`Where your turn ends and the assistant's begins. Applies to hands-free conversations. Under push to talk, the key decides.`,turnTakingTitle:`Turn taking`,voiceShortcutSubtitle:`Press the shortcut to start or end a voice conversation, from anywhere in the app.`,voiceShortcutSubtitleDesktop:`Global shortcut for starting/ending a voice conversation.`,voiceShortcutTitle:`Voice Mode Shortcut`},voicePickerCard:{changeButton:`Change`,creditsNote:`Uses Vellum credits, through providers like ElevenLabs and Deepgram.`,title:`Voice`,titleWithName:`{name}'s Voice`},webFetchCard:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter your API key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,providerLabel:`Provider`,savedToast:`Web fetch settings saved.`,subtitle:`Configure how your assistant reads individual web pages`,title:`Web Fetch`},webSearchCard:{apiKeyLabel:`API Key`,apiKeyPlaceholder:`Enter your API key`,configUpdateFailedToast:`Failed to update assistant configuration. Please try again.`,localPreferencesFailedToast:`Saved, but local preferences could not be written.`,providerAriaLabel:`Web search provider`,providerLabel:`Provider`,savedToast:`Web search settings saved.`,subtitle:`Configure how your assistant should search the web`,title:`Web Search`,vellumNote:`Search runs through your Vellum account.`}},Z=[`common`,`chat`,`schedules`,`account`,`channels`,`settings`,`workspace`,`terminal`,`remote-web`,`credential-requests`,`logs`,`library`,`home`,`contacts`,`onboarding`,`intelligence`],bn=`common`,xn=[`en`,`es`];function Q(e){return typeof e==`string`&&xn.includes(e)}function Sn(e){for(let t of e){let e=t.trim().toLowerCase();if(e===``)continue;if(Q(e))return e;let n=e.split(`-`)[0];if(Q(n))return n}return`en`}var $={common:_n,chat:gn,schedules:vn,account:rn,channels:an,settings:yn,workspace:hn,terminal:mn,"remote-web":pn,"credential-requests":sn,logs:un,library:ln,home:cn,contacts:on,onboarding:fn,intelligence:dn},Cn={es:{common:()=>r(()=>import(`./common-gaw6OefS.js`),[]),chat:()=>r(()=>import(`./chat-QLQLsbFK.js`),[]),schedules:()=>r(()=>import(`./schedules-BXXSRQs5.js`),[]),account:()=>r(()=>import(`./account-BuiU7DuB.js`),[]),channels:()=>r(()=>import(`./channels-DFBLDFWh.js`),[]),settings:()=>r(()=>import(`./settings-BY8t4asx.js`),[]),workspace:()=>r(()=>import(`./workspace-Ch5zHBn1.js`),[]),terminal:()=>r(()=>import(`./terminal-Dily8RM4.js`),[]),"remote-web":()=>r(()=>import(`./remote-web-BX-aNmAz.js`),[]),"credential-requests":()=>r(()=>import(`./credential-requests-CpHxMIMS.js`),[]),logs:()=>r(()=>import(`./logs-BsCB67bq.js`),[]),library:()=>r(()=>import(`./library-Da5KVeDF.js`),[]),home:()=>r(()=>import(`./home-ySv5rBLy.js`),[]),contacts:()=>r(()=>import(`./contacts-BQcl-1XL.js`),[]),onboarding:()=>r(()=>import(`./onboarding-DwRWKhM_.js`),[]),intelligence:()=>r(()=>import(`./intelligence-C7DYXerF.js`),[])}};async function wn(e){if(e===`en`)return $;let t=Cn[e],n=await Promise.all(Z.map(async e=>[e,(await t[e]()).default]));return Object.fromEntries(n)}function Tn(e,t){return{lng:e,fallbackLng:`en`,ns:[...Z],defaultNS:bn,resources:t,interpolation:{escapeValue:!1},returnNull:!1}}function En(){if(typeof navigator>`u`)return[];let e=navigator.languages;return Array.isArray(e)&&e.length>0?[...e]:navigator.language?[navigator.language]:[]}function Dn(){let e=t(`locale`,``);return Q(e)?e:Sn(En())}function On(e){if(typeof document>`u`)return;document.documentElement.lang=e;let t;try{let n=new Intl.Locale(e);t=n.getTextInfo?.().direction??n.textInfo?.direction}catch{t=void 0}document.documentElement.dir=t===`rtl`?`rtl`:`ltr`}async function kn(e){let t=Z.filter(t=>!F.hasResourceBundle(e,t));if(t.length===0)return;let n=await wn(e);for(let r of t)F.addResourceBundle(e,r,n[r],!0,!0)}function An(e,t){n(e,{context:`i18n_catalog_load`,level:`warning`,tags:{locale:t}})}async function jn(){let e=Dn();if(F.isInitialized)try{return await Mn(e),e}catch(t){return An(t,e),Nn()}let t={en:$},n=`en`;if(e!==`en`)try{t[e]=await wn(e),n=e}catch(t){An(t,e)}return await F.use(new nn).use(Oe).init(Tn(n,t)),On(n),n}async function Mn(t){await kn(t),await F.changeLanguage(t),e(`locale`,t),On(t)}function Nn(){let e=F.resolvedLanguage??F.language;return Q(e)?e:`en`}export{Se as a,we as i,jn as n,k as o,De as r,ve as s,Nn as t};
|